고양이가 야옹하고 울다"


31

cat "야옹"간다

우리는 모두 cat프로그램 의 개념에 익숙 합니다. 사용자가 무언가를 입력하면 다시 사용자에게 에코됩니다. 쉬운. 그러나 cat지금까지 본 모든 프로그램은 한 가지 사실을 놓쳤습니다 cat. 당신의 작업은 프로그램을 작성하는 것입니다 그래서 그 모든 복사본 STDINSTDOUT 하지 않는 한 입력이 cat, 어떤 프로그램이 출력해야 경우 cat goes "Meow".

채점

이것은 이므로 점수는 바이트 수이며 몇 가지 수정자가 있습니다.

  • 프로그램이 cat(예를 들어 cow: cow goes "Moo") 이외의 다른 동물에 대해 작동하는 경우 추가 동물 마다 : -10
  • 프로그램에서 "cat"이라는 단어를 사용하지 않는 경우 : -15
  • 프로그램 fox이 "여우가 무엇을 말합니까?"

함께하는 동물과 소리 :

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

이 목록 에있는 다른 것은 허용됩니다.

규칙

  • 표준 허점 적용
  • 당신은 아무것도 쓰지 않아야합니다 STDERR
  • 큰 따옴표 대신 작은 따옴표 / 따옴표없이 사용할 수 있습니다.

리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

## 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
보너스 : 여우는 무엇을 말합니까?
Stewie Griffin

1
보너스의 경우 : 각각의 추가 동물이 단수 일 수 있습니까? 또는 "꿀벌"은 목록에서와 같이 항상 복수 여야합니까?
ProgramFOX


1
큰 따옴표 대신 작은 따옴표를 사용할 수 있습니까? 또한 stderr로 출력 할 수 있습니까?
Blue

답변:


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 %를 곱한 것입니다.
대럴 호프만

@DarrelHoffman 앞으로의 모든 도전 과제를 염두에 두겠습니다.

글쎄, 당신은 성공적으로 머리를 터뜨렸고 더 이상 여우의 말을 모릅니다. +1
kirbyfan64sos

까마귀가 쉰다?
Magic Octopus Urn

@carusocomputing 위키 백과에 따르면 그렇게한다. 나는 그들이 squalk나 자신을 생각
Blue

7

티 스크립트 , 29-15 = 14 바이트

string을 사용하지 않습니다 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 (Dyalog) , 28-15 = 13 바이트

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

입력이 다음 goes "Meow"과 같은 경우 입력tac 반대로 .

온라인으로 사용해보십시오!

{} 익명 기능

⌽'tac' 문자열을 뒤집습니다 (문자를 피함으로써 -15 보너스를 얻으려면 cat)

⍵≡ 인수가 해당 인수와 동일한 지 여부에 대한 부울

' goes "Meow"'/⍨ 이것을 사용하여 문자열을 필터링하십시오 (즉, 거짓이면 빈 문자열을 반환합니다)

⍵, 논증에 덧붙이다



3

자바 스크립트, 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
소 moo 9
소 moo 6
까마귀 까마귀 7
개 껍질 7
오리 ck 9
개구리 짖는 소리 9
말 히스 9
호그 oink 7
램 바아 7
종달새 노래 8
사자 포효 8
소 낮은 5
비둘기 쿠우 9
루크 소 7
물개 껍질 8
양 바아 8
뱀 히스 9
백조 외침 7
호랑이 포효 9
고래 노래 9

(이 목록을 만드는 지루한 작업을 도와 준 친구에게 감사합니다)

Ungolfed 코드 :

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자를 사용했습니다.


편집 : meow에 고정 따옴표와 대문자 (질문이 대문자와 일치하지는 않지만)
Domino

그리고 ... 내 작업은 -10 보너스만으로 충분하다는 것을 증명하면서 끝났습니다. :)
Domino Domino

3

자바 스크립트, 81-20-15 = 46 바이트 50-15 = 35 바이트

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

Meow 주위에 큰 따옴표를 놓을 수 있습니다 .
anotherdave

아니오, 그것은 실제로 질문의 일부입니다
Domino

방법에 대해 '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 / $ / goes "Meow"/'는 몇 바이트를 절약합니다. 그러나 새로운 5 % 보너스는 "고양이"가없는 원래의 15 바이트 보너스에 비해 가치가 없습니다.
Glenn Randers-Pehrson

@ GlennRanders-Pehrson 더 이상은 없습니다!

2

MATLAB, 58-15 = 43 바이트

cat코드에서 사용하지 않는 것에 대한 보너스와 함께 매우 간단 합니다.

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

작은 따옴표 안에 입력해야합니다. ' ' .


현재 양식에서 'cat'이 입력으로 제공되면 올바르게 출력되지 않습니다. if 문에서 x =를 잊었을 것입니다 .
slvrbld

그러나 나는 또한 당신 에게이
slvrbld

@ slvrbld, 주목 해 주셔서 감사합니다. 편집 한 후에 일어났습니다. BTW : 3 자 이외의 입력에 대해서는 제안이 작동하지 않습니다. =)
Stewie Griffin

아 맞아. 나는 고양이와 여우에 집중하고 나머지는 잊어 버렸습니다.
slvrbld

2

자바 스크립트, 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]+'"')

나는 확실히 이기지 못했지만 많은 여분의 동물을 덮었습니다.

자바 스크립트, 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는 문자열 처리를 위해 설계된 언어 I (@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 바이트를 절약 한 Stewie Griffin 덕분에

8 바이트를 저장해 준 grc에게 감사합니다.

문자열을 사용하지 않으면 cat-15 바이트가 제공됩니다.

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

1

자바 스크립트, 48-15 = 33 바이트

용도 \x61을 대신 a에서 cat.

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

1

펄, 46-15 = 31

$_=join'',<>;s/(?<=^ca)t$/t goes "Meow"/;print

1

루비, 49 46 50-15 = 35 바이트

꽤 간단합니다. 고양이를 사용하지 않습니다.

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

편집 : 3 바이트를 절약 한 @ w0lf에 감사드립니다!


분명히 필요가 없습니다 chop: ideone.com/lTpShD은
크리스티안 루파 스쿠

@ w0lf "cat \ n"! = "cat"(적어도 나에게는 효과가 없다) 나는 이데온의 STDIN에 줄 바꿈이 없을 것으로 추측하고있다
Peter Lenkefi

공정하게, 나는 나의 모범이 잘못되었다는 것을 안다. 그런 다음 코드를 줄이기 위해이 작업 을 고려할 수 있습니다.
Cristian Lupascu

@ PeterLenkefi, 아직 코드에 고양이가 몇 개 남아 있습니다 ... 업데이트하거나 잊어 버렸습니까?
Stewie Griffin

@StewieGriffin 젠장! 오늘 멀티 태스킹이 최고가 아닙니다. 그러나 5 분 안에 다시 업데이트하겠습니다.
피터 Lenkefi

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 인코딩 gz 압축 배열을 사용합니다. 이것은 허용 된 65 마리의 동물 모두와 작동하지만 내 대본은 크다는 것을 의미합니다. 또한 여우와 함께 작동하며 고양이라는 단어가 없습니다.


1

MATLAB, 46 바이트

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

분명히 사소한. 입력은 작은 따옴표로 묶어야합니다.


확실하지 않지만 ans = .. 문제를 인쇄 하는 것이 일반적이라면 받아 들여지지 않습니다. 그것이 합의인지 확실하지 않지만 사용하는 disp것이 일반적 입니다.
Stewie Griffin

+1, 내 것보다 짧아서 =)
Stewie Griffin

1

, 208206-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

자바 스크립트 : 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 bytes)
ETHproductions

@ETHproductions OOooh, 좋습니다! 그래도 그런 종류의 구문을 모르겠습니다.
Fuzzyzilla

@Fuzzyzilla는 "ES6"이라는 JavaScript의 새로운 버전의 일부로, 새로운 함수 구문개요에 연결 됩니다. 여기에 또한 ES6에 대한 팁일반 자바 스크립트 팁
Downgoat

1

하스켈, 52-15 = 37 바이트

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

\9915 바이트 보너스를 얻기 위해“cat”에서 c를 대신 하여 사용 합니다.


1

O , 22 16 14 바이트

29 bytes - 15

Q"tac"`J=J" goes \"Meow\""+Q?

It's long and can be golfed more



1

Pyth, 82-95 = -13 bytes

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

I finally got around to converting my new functional Python 2 entry to Pyth. It doesn't beat the top contender. Turns out zipping together more animals into a larger dictionary reduces score faster than cleverly associating animals with sounds. This supports 8 animals in addition to cat: rhino, okapi, moose, lion, tiger, badger, hippo, and stag.

Try it online


1

Japt, 25-15=10 24-15 = 9 bytes

First time trying Japt:

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

ƒ should be replaced with unprintable character U+0083 Compiles to:

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

Old solution:

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

Try it here


Pretty nice! Sorry the backslashes are necessary, I thought I had fixed that.
ETHproductions

Since the code contains an unprintable character, which Markdown discards, could you please add a link?
ETHproductions

Added the link, also why does U+0083 get replace U+0192 or ƒ when you run this snippet: "\u0083".charCodeAt()
Generic User

I have no clue. I can't seem to reproduce this.
ETHproductions

1

Pyth, 26-15 (no "cat") = 11 bytes

My first ever Pyth program!

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

Try it here

Explaination

   _"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 bytes

#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());}

Compiles well with VisualStudio. GCC wants me to #include <string> and #include <cstdio>. It would be shorter if I wouldn't go for bonuses, but I still hope author revises bonuses. I can't think of language where defining cow -> moo or so is way way shorter than 10bytes. Mine cost 3+key+value bytes for additional animal and flat 22+17 bytes for defining structure and so.

Ungolfed

#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(crow,caw)" has a length of 11. So getting rid of that to "t(swan,cry)" would drop 14 bytes. And admittedly make it less fun :(
Noodle9

@user, As I said, I still hope author revises bonuses.
Zereges

You should state C++11 in the headline. Python 2 and 3 are also always distinct noted. While the using is no big deal, the initializer list is.
Karl Napf

@KarlNapf Thanks for pointing that out.
Zereges

You can also change #include <map> to #import<map> for -2 bytes. The space before < can be omitted and #import throws some warnings but is accepted be GCC and MSVC
Karl Napf

0

Pyth, 31 - 15 = 16 bytes

You can try it out here

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

Explaination:

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 can be replaced with \C. It's still +\C"at", so you can keep the bonus.
clap

0

C, 76 bytes

main(){char a[99];gets(a);printf("%s%s",a,strcmp(a,"cat")?"":" goes meow");}

0

PHP, 70-15 = 55 bytes

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

(saved as ISO-8859-1)

Uses inverted undefined constants as string literals:

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

Everything is combined in a single echo statement, shorthanded with <?=

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.