Кіт іде "М'ясо"


31

cat іде "Meow"

Ми всі знайомі з концепцією catпрограми. Користувач щось вводить, це повторюється назад. Легко. Але всі catпрограми, які я бачив до цього часу, пропустили один факт: a cat"М'яв". Так що ваше завдання полягає в тому, щоб написати програму , яка копіює все STDINна STDOUT КРІМ вхід не cat, в цьому випадку ваша програма повинна вивести cat goes "Meow".

Оцінка балів

Це , тому ваш рахунок - це ваш байт, з кількома модифікаторами:

  • Якщо ваша програма працює для будь-яких інших тварин, крім cat(наприклад cow: cow goes "Moo"), для кожної додаткової тварини: -10
  • Якщо у вашій програмі не використовується слово "кішка": -15
  • Якщо ваша програма відповідає на fox"Що каже лисиця": -25

Тварини та звуки, які йдуть разом:

cow goes moo duck goes quack sheep goes baa bees go buzz frogs go croak

Все, що є в цьому списку , дозволено.

Правила

  • Застосовуються стандартні лазівки
  • Ви нічого не повинні писати STDERR
  • Замість подвійних лапок ви можете використовувати одинарні / без жодних.

Таблиця лідерів

Ось фрагмент стека для створення як звичайного табло, так і огляду переможців за мовою.

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

## Language Name, N bytes

де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Якщо ви хочете включити у свій заголовок декілька чисел (наприклад, тому що ваш результат становить суму двох файлів або ви хочете окремо вказати штрафні санкції для перекладача), переконайтесь, що фактичний результат - це останнє число у заголовку:

## Perl, 43 + 2 (-p flag) = 45 bytes

Ви також можете зробити ім'я мови посиланням, яке потім з’явиться у фрагменті таблиць лідерів:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


16
За бонуси: Що каже лисиця?
Стюі Гріффін

1
Щодо бонусів: чи може кожна додаткова тварина бути єдиним чи у "бджіл" завжди має бути множина, як у вашому списку?
ProgramFOX


1
Замість подвійних цитат ви можете використовувати одинарні? Крім того, ви можете вивести на stderr?
Синій

Відповіді:


17

Pyth, 231-255 = -24 байт

-24 * 10 зайвих тварин, -15 для жодної котячої струни

pzI}zJv.Z"xÚ]Arà E¯âñMOÛ|°
Ø¢mÞ½`&ÉR¯'_ãPÍm1;ñÝ|,F ¹×z#½öÂ÷ÜAPúõMh#Ì©UOC *CѰk%¹ö´qÌzj,å<&{jàRFÖ(¥s    ñ`GÂ:çkô#ù\M+üqíéaw ÑuW6Lã,¶w/'87ö×_r]¢:jkz»ÚFÙ¦ÈcÅËØíëûÖOa¿Þµ´6 ø¡ãEþþ:"jk(" goes "N@JzN

Посилання на код

Псевдокод

Auto assign z to input
print z
J = decompress animal-sound dict
if z in J:
    print " goes ", J[z], '"'

Тварини, яких він знає:

{'hare': 'squeak', 'seal': 'bark', 'lion': 'growl', 'rook': 'hiss', 'sheep': 'baa', 'hamster': 'squeak', 'moose': 'bellow', 'grasshopper': 'chirp', 'rhinoceros': 'bellow', 'cat': 'meow', 'tiger': 'growl', 'stag': 'bellow', 'crow': 'caw', 'okapi': 'bellow', 'snake': 'hiss', 'cicada': 'chirp', 'badger': 'growl', 'dog': 'bark', 'cricket': 'chirp', 'tapir': 'squeak', 'bird': 'chirp', 'sparrow': 'chirp', 'lamb': 'baa', "frog": "croak", "raven": "croak"}

16
Я відчуваю, що бонус повинен становити -10%, а не -10 байт. Це призведе до зменшення ефекту попередження подібних зловживань. (І це 10% помножити кожен раз, не 10% від оригіналу , складених, в іншому випадку вам буде потрібно тільки 10 тварин, щоб отримати оцінку від 0 незалежно від того , як довго код був ...)
Даррел Hoffman

@DarrelHoffman Я буду мати це на увазі для всіх майбутніх проблем.

Ну, ти успішно змусив мою голову вибухнути, і я вже не знаю, що говорить лисиця. +1
kirbyfan64sos

Ворон іде хрустко?
Чарівний восьминога Урна

@carusocomputing Відповідно до wikipedia, це так. Я думаю , що вони йдуть squalkсобі
Синій

7

TeaScript , 29 - 15 = 14 байт

Не використовує рядок cat.

xr(/^c\at$/,'$& goes "Meow"')

"Що каже лисиця" (довжина = 21) довше, ніж бонус варто.


Бонус на лисицю тепер того вартий!

5

CJam, 12 байт

q_:)"dbu"=" goes \"Meow\""*

Програма має 27 байт і не використовує слово cat( -15 байт ).

Спробуйте його в інтерпретаторі CJam .

Як це працює

q_                e# Read all input and push a copy.
:)                e# Increment all code points of the copy.
"dbu"=            e# Push 1/0 if the result is/isn't "dbu".
" goes \"Meow\""* e# Repeat the string that many times.

10
Мені подобається смайлик:)
ETHproductions

4

APL (Діалог) , 28 - 15 = 13 байт

{⍵,' goes "Meow"'/⍨⍵≡⌽'tac'}

Введення, а потім, goes "Meow"якщо вхід еквівалентний tacзворотному.

Спробуйте в Інтернеті!

{} Анонімна функція

⌽'tac' переверніть рядок (щоб отримати бонус -15, уникаючи символів cat)

⍵≡ Булевий для того, чи є аргумент ідентичним цьому

' goes "Meow"'/⍨ використовуйте це для фільтрування рядка (тобто повертає порожню рядок, якщо помилкова)

⍵, додавати до аргументу



3

JavaScript, 45 - 15 = 30/264 - 235 = 29

alert((s=(d='MeowBuzzSongMooMooCawBarkQuackCroakHissOinkBaaSingRoarLowCooCawBarkBaaHissCryRoarSingC\x61tBeeBirdCattleCowCrowDogDuckFrogHorseHogLambLarkLionOxPigeonRookSealSheepSnakeSwanTigerWhale'.split(/(?=[A-Z])/))[d.indexOf(i=prompt())-23])?i+' goes "'+s+'"':i)

Нижня сторона: ви повинні написати ім'я тварини з першої літери великою літерою, а решту з малої літери. Нижче дивіться іншу версію, яка це виправляє. Ця версія уникає aкота з \x61і включає код для 22 зайвих тварин із цього списку (для всіх дозволених тварин, у яких було достатньо коротких слів, щоб вони того варті):

бджолиний гудок 7
пташина пісня 8
велика рогата худоба мува 9
корова муо 6
ворона корова 7
собача кора 7
качка квак 9
жаба крок 9
кінь
шипшина 9 свинячий дуб 7
ягня беа 7
жайворонок співає 8
лев рев 8
вол низький 5
голуб кухон 9
грак корова 7 корова
тюленя 8
барів овець 8
змій шипить 9
лебідь крик 7
тигр рев 9
кит співає 9

(дякую моєму другові за те, що він допоміг мені втомлювати завдання скласти цей список)

Невикористаний код:

data = 'MeowBuzzSongMooMooCawBarkQuackCroakHissOinkBaaSingRoarLowCooCawBarkBaaHissCryRoarSingC\x61tBeeBirdCattleCowCrowDogDuckFrogHorseHogLambLarkLionOxPigeonRookSealSheepSnakeSwanTigerWhale'.split(/(?=[A-Z])/);

input = prompt();
index = data.indexOf(input);
sound = data[index-23];
result = sound ? input + ' goes "' + sound + '"' : input;
alert(result);

Перша версія, 45 байт - 15 бонус = 30

alert((i=prompt())=='\x63at'?i+' goes "Meow"':i)

Так, я знаю. Я поїхав з 30 до 29 із ВСІМ додатковою роботою. Було весело!

Версія, що дозволяє вводити малі літери, 294 байти - 235 бонус = 59

alert((s=(d='MeowBuzzSongMooMooCawBarkQuackCroakHissOinkBaaSingRoarLowCooCawBarkBaaHissCryRoarSingC\x61tBeeBirdCattleCowCrowDogDuckFrogHorseHogLambLarkLionOxPigeonRookSealSheepSnakeSwanTigerWhale'.split(/(?=[A-Z])/))[d.indexOf((i=prompt())[0].toUpperCase()+i.slice(1))-23])?i+' goes "'+s+'"':i)

Я також спробував видалити корпус із масиву даних, .join().toLowerCase().split(',')але натомість він отримав 297 символів.


редагувати: фіксовані лапки та капітал у мене (хоча питання не відповідає столицям)
Domino

І ... моя робота тут зроблена, доводячи, що бонус -10 був достатньою :)
Доміно

3

JavaScript, 81 - 20 - 15 = 46 байт 50 - 15 = 35 байт

(o=prompt()=="ca"+"t")&&o+=' goes "Meow"';alert(o)

Ви можете опустити подвійні лапки навколо Meow .
черговий день

ні, це насправді частина питання
Доміно

Як щодо 'c\at'цього 'ca'+'t'?
Густаво Родрігес

alert({'c\at':'c\at goes "Meow"',fox:'What does the fox say'}[a=prompt()]||a). Чому б навіть не скинути попередження? Він вже повертає результат на консоль.
Густаво Родрігес

2

GNU sed, 37 - 15 = 22 байти

sed -r 's/^(\x63at)$/\1 goes "Meow"/'

sed '/ ^ c [a] t $ / s / $ / йде "Meow" /' зберігає кілька байт. Але новий 5% бонус нікчемний порівняно з оригінальним 15-байтним бонусом за те, що у вас немає «кота».
Гленн Рендерс-Персонсон

@ GlennRanders-Pehrson Більше не!

2

MATLAB, 58 - 15 = 43 байти

Досить прямо, з бонусом за невикористання catв коді:

x=input('');if isequal(x,'dbu'-1);x=[x ' goes "Meow"'];end;x

Вхідні дані повинні бути приведені в одинарні лапки: ' '.


У теперішньому вигляді це не відображається правильно, якщо вводиться "cat". Ви, мабуть, забули x = у if-операторі.
slvrbld

Але я також дам вам пораду повернути ці байти плюс додаткові 2: замініть весь if-оператор на: if ~ any (x-'dbu '+ 1)
slvrbld

@slvrbld, дякую за те, що помітили, це сталося після того, як я зробив редагування. BTW: ваша пропозиція не працює для входів, які не мають 3 символи. =)
Стюі Гріффін

Ах, ти прав. Я занадто зосередився на кішці та лисі і забув про інше.
slvrbld

2

Javascript, 117 байт

for(c=0,s="bee.Buzz.bird.Song.c\at.Meow.cow.Moo.crow.Caw.dog.Bark.oxen.Low.owl.Who.rook.Caw.sheep.Baa.swan.Cry".split('.'),p=prompt(),a=![];c<s.length;c+=2){if(p==s[c])a=c}if(!a)alert(p=='fox'?'What does the fox say':p);else alert(s[a]+' goes "'+s[a+1]+'"')

Я точно не виграв тут, але я охопив багато зайвих тварин.

Javascript, 31 байт

p=prompt();alert(p=='c\at'?p+' goes "Meow"':p)

2

HALT , 71 - 15 = 56 байт

1 IF "cat" 2 ELSE 3
2 TYPE "MEOW";HALT
3 SET 0;NEXT
4 INCREMENT;STORE 0

HALT - це мова, яку я (@Downgoat) створив для обробки рядків, єдина проблема в тому, що вона трохи довга

Відформатовано

1              IF "cat" 2 ELSE 3
2 TYPE "MEOW"; HALT
3 SET 0      ; GOTO 6
4 INCREMENT  ; STORE 0

2

Пітон 3, 81 70 55 46 - 15 = 31 байт

Завдяки Стюі Гріффін за економію 15 байт

Завдяки grc за економію 8 байт.

Не використовуючи рядок, catдає -15 байт.

y=input()
print(y+' goes "Meow"'*(y=="ca""t"))

1

JavaScript, 48 - 15 = 33 байти

Використовує \x61як заміну для aв cat.

i=prompt();alert(i=="c\x61t"?i+' goes "Meow"':i)


1

Рубі, 49 46 50 - 15 = 35 байт

Думаю, досить прямо вперед. Не використовується кішка.

$<.map{|l|puts l==?c+'at
'??c+'at goes "Meow"':l}

Редагувати: Дякую за @ w0lf за збереження 3 байтів!


Мабуть, немає потреби в chop: ideone.com/lTpShD
Крістіан Лупаску

@ w0lf "cat \ n"! = "cat" (принаймні, це не працює для мене) Я здогадуюсь, що STDIN Ідеона не має
зворотного

Досить справедливо, я бачу, де мій приклад помилився. Тоді ваш міг би розглянути це, щоб скоротити код.
Крістіан Лупаску

@PeterLenkefi, у твоєму коді залишилося ще кілька котів ... Ви забули оновити його чи ...?
Стюі Гріффін

@StewieGriffin Чорт, я це зробив! Моя багатозадачність сьогодні не на вершині. Однак через 5 хвилин я його ще раз оновлю.
Пітер Ленкефі

1

PHP, 1204 - (10 * 64) - 15 - 20 = 529 байт

<?php $i = $argv[1];$s = json_decode(gzuncompress(hex2bin("78da555351b2db200cbc8a27dfee057a1b192bc018104f40dcbccebb7b25d9499d8fcc588b10abddcddf1b64e4e8a04c3bd1eac86db7df3774e136dfa0744c5451805688bb400bac1e5900cfb42703ba1e3bc6e3ce82dabe8cef6f2d22af52b910b95ad93b72d173a22c8083f4d0f63bc75c131aa2e332d2ae45886e43ed7769082f438afc52027df46b20182af457b83c24537ad2c199484b99f6fe669dd9afcd6cc70ef67972a03bb8c10915abb12aa995bc7206deac48555818a9e80ea46cf8142020fe0aa0ccd761327e0db00e046f745426d0c531610d22af609d47aea8dade91d998ad447aebcef6aef0b32d7d64b8df4ddd84a0173c436b816a35475efbf8110bc254a3bf6a1420b76e7d1788f1a346ceb14f8e61b98c0bc44ddb0a46afe284582b55ea9087e1af2004236b3999278a452726c8cb8bef3c2d0086b14ad362f1f3b4032fe67b8aa59cae88742744aab26ccff3f47a2583af11ad0f344c0a1119910553b2d864929562270577b14a87d10635ea351a3e0895572ffd11f0f8ac0867fadf36898668249c65a732448e387de481c1c96931272598863c8ed09ec6b17020874c5792ac1e5bea8ee234c7c238df1a42faff449360552b55c05660d3d5426c4dcb0a7c26f874ac75f0d7a7da0e079da7145d74f848418fc71f5a75d652947a4e1edd469715fae023e29e96c3b0c748027e847a87c4ef4cc893820438722f666bc9a6cb69facf3f28e87499")));echo array_key_exists($i,$s)?"$i goes {$s->$i}":($i=="fox"?"What does the $i say":$i);

Я використовую json-кодований масив стислих масивів звуків тварин. Це означає, що він працює з усіма 65 дозволеними тваринами, але мій сценарій величезний. Також працює з лисою, і в ній немає слова кішка.


1

MATLAB, 46 байт

regexprep(input(''),'^cat$','cat goes "Meow"')

Справді, банально. Вхід повинен бути вказаний в одиничних лапках.


Я не впевнений, але я думаю, що ans = .. це взагалі не прийнято, якщо завдання полягає в тому, щоб щось надрукувати. Я не впевнений, чи це консенсус, але це досить поширене використання dispчи щось подібне.
Стюі Гріффін

+1, хоча за те, що він коротший, ніж мій =)
Стюі Гріффін

1

Промінь , 208 206 - 15 = 191 байт

Не конкурентоспроможний запис, але трохи весело зробити. Він перевіряє перший на наявність літер введення проти cat. Якщо воно не відповідає, це буде ярлик до стандартної програми для котів. Якщо вона збігається, вона додаєтьсяgoes "Meow"

'''''''''>`\/n@>`)'''>`++\
/++++++++++/r /SP''+(++++/
\+)'PSrn@--S/ \rn@`>`)rn'''''>`++++++)++@P'p++++@'p-----@`p++@'p-@``p@++@'''''>`+++++++++)--@'p++@'p-----@++++++++@``p++@H
/@<  (`<     < `<    ''<
>ruH

1

Java = 222 байти (стислий)

public class A {public static void main(String[] args) {Scanner a=new Scanner(System.in);for(;;){String b=a.nextLine();if(!b.equalsIgnoreCase("cat"))System.out.println(b);else {System.out.println("meow");System.exit(0);}}}

Або я міг би її розпакувати.

Пакет = 52 байти

set /p k=
if "k"=="cat" (echo cat) ELSE (echo %k%)

1

Javascript: 48 символів, 48 байт

function(s){return (s=="cat")?"cat goes meow":s}

Тест

=>"Пес"

<="Пес"

=>"кіт"

<="кот іде мяу"


Хороша робота! Ви можете скинути круглі дужки навколо s=="cat". Також передбачається, що котяча струна cat goes "Meow", тому 'function(s){return s=="cat"?'cat goes "Meow"':s}цілком справедлива.
ETHproductions

Якщо ви хочете зекономити ще більше, ви можете скористатися ES6: s=>s=="cat"?s+' goes "Meow"':s(30 байт)
ETHproductions

@ETHproductions OOooh, це добре! Я не знаю такого типу синтаксису, можливо, посилання?
Fuzzyzilla

@Fuzzyzilla це частина нової версії JavaScript під назвою "ES6", посилання на новий синтаксис функцій та огляд . Ось також поради щодо ES6 та поради щодо JavaScript взагалі
Downgoat

1

Haskell, 52-15 = 37 байт

c"\99at"="\99at goes \"Meow\""
c s=s
main=interact c

Використовуючи \99як заміну c в "cat", щоб отримати бонус 15 байт.


1

О , 22 16 14 байт

29 байт - 15

Q "tac" `J = J" йде \ "Meow \" "+ Q?

Це довго і можна пограти в гольф більше



1

Pyth, 82-95 = -13 байт

+z*}zKc."atÜiÃ'4ãl¾Eªîiû<-È&e"\jjk[d"goes"dNr@c."bw««[áÅ3ÏB"\c%x`Kz3 3N

Нарешті я перейшов до перетворення моєї нової функціональної програми Python 2 в Pyth. Це не перемагає головного суперника. Виявляється, стискаючи більше тварин у більший словник, зменшується оцінка швидше, ніж вміло асоціюється тварин із звуками. Окрім кішок, це підтримка 8 тварин: носоріг, окапі, лось, лев, тигр, борсук, бегемот та оленя.

Спробуйте в Інтернеті


1

Япт, 25-15 = 10 24-15 = 9 байт

Вперше спробую Japt:

N¦`¯t`?N:`¯t goƒ \"´ow\"

ƒйого слід замінити символом, який не можна U+0083 роздрукувати

N!="cat"?N:"cat goes \"meow\""

Старе рішення:

N¥`¯t`?`¯t goƒ \"´ow\"`:N

Спробуйте тут


Дуже приємно! Вибачте, що накипи потрібні, я думав, що це виправили.
ETHproductions

Оскільки код містить недрукований символ, який Маркдаун відкидає, ви можете, будь ласка, додати посилання?
ETHproductions

Додано посилання, а також чому U+0083замінюється U+0192або ƒколи ви запускаєте цей фрагмент:"\u0083".charCodeAt()
Загальний користувач

Я поняття не маю. Я не можу це відтворити.
ETHproductions

1

Pyth, 26-15 (немає "кота") = 11 байт

Моя перша в історії програма Pyth!

Iqz_"tac"+z" goes meow";Ez

Спробуйте тут

Пояснення

   _"tac"                   # Reverse the string "tac"
Iqz                         # If the input equals "tac" reversed
         +z" goes meow";    # Append " goes meow"
                        Ez  # Else, use the input.
                            # Implicit: print the input, if it's used.

1

C ++ 11, 316 - 11 * 10 - 15 = 191 байт

#include <map>
#define t(a,b){#a,#b},
using s=std::string;int main(){std::map<s,s>m{t(cow,moo)t(crow,caw)t(dog,bark)t(hog,oink)t(lark,sing)t(lion,roar)t(oxen,low)t(rook,caw)t(seal,bark)t(sheep,baa)t(swan,cry){"c""at","meow"}};s l;while(int i=~getchar())l+=~i;printf("%s",(m[l]==""?l:l+" goes \""+m[l]+'"').c_str());}

Добре поєднується з VisualStudio. GCC хоче, щоб я #include <string>і #include <cstdio>. Це було б коротше, якби я не пішов на бонуси, але все ж сподіваюся, що автор переглядає бонуси. Я не можу придумати мову, де визначається cow -> mooчи так, шлях коротший, ніж 10 байт. Міна вартості 3+key+valueбайтів для додаткових тварин та плоских 22+17байтів для визначення структури тощо.

Безумовно

#include <map>

#define t(a, b) { #a, #b },
using s = std::string;
int main()
{
    std::map<s, s> m{
        t(cow,moo)
        t(crow,caw)
        t(dog,bark)
        t(hog,oink)
        t(lark,sing)
        t(lion,roar)
        t(oxen,low)
        t(rook,caw)
        t(seal,bark)
        t(sheep,baa)
        t(swan,cry)
        { "c""at", "meow" }
    };
    s l;
    while (int i = ~getchar())
        l += ~i;
    printf("%s", (m[l] == "" ? l : l + " goes " + m[l]).c_str());
}

"t (ворона, кала)" має довжину 11. Отже, позбувшись цього "t (лебідь, крик)", випало б 14 байт. І, правда, зробити це менш весело :(
Noodle9

@user, Як я вже сказав, я все ще сподіваюся, що автор переглядає бонуси.
Зереги

Ви повинні вказати C ++ 11 у заголовку. Python 2 і 3 також завжди чітко відзначаються. У той час usingяк список не є великим, список ініціалізаторів є.
Карл Напф

@KarlNapf Дякую, що вказали на це.
Зереги

Ви також можете змінити #include <map>на #import<map>-2 байти. Пробіл раніше <може бути пропущений і #importнаводить деякі попередження, але його приймають як GCC та MSVC
Karl Napf

0

Pyth, 31 - 15 = 16 байт

Ви можете спробувати тут

In+C99"at"zz;E+z" goes \"Meow\"

Пояснення:

I                                # If-statement
 n                               # not equal
  +C99"at"                       # Adds the char 99 with the string "at" = "cat"
          z                      # z, the user input
           z                     # Print the user input
            ;                    # Ends all open parentheses
             E                   # Else-statement
              +z" goes \"Meow\"  # Adds ' goes "Meow"' to z and prints the result

1
C99можна замінити на \C. Це все ще +\C"at", тому ви можете зберегти бонус.
хлопайте


0

PHP, 70-15 = 55 байт

<?=$l=rtrim(stream_get_contents(STDIN),~òõ),$l==~œž‹?~ߘšŒßݲšˆÝ:'';

(збережено як ISO-8859-1)

Використовує інвертовані невизначені константи як рядкові букви:

  • ~òõ == "\r\n"
  • ~œž‹ == 'cat'
  • ~ߘšŒßݲšˆÝ == ' goes "Meow"'

Все поєднується в одному ехо-висловлюванні, скороченому с <?=

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.