猫がないた"


31

cat 「ニャー」になる

私たちは皆、catプログラムの概念に精通しています。ユーザーが何かを入力すると、ユーザーにエコーバックされます。簡単です。しかし、cat私がこれまでに見たすべてのプログラムは1つの事実を見逃していcatます。あなたの仕事は入力がない限りすべてSTDINにコピーするプログラムを書くことです。その場合、あなたのプログラムは出力するべきです。STDOUT catcat goes "Meow"

得点

これはであるため、スコアはバイトカウントであり、いくつかの修飾子があります。

  • プログラムがcat(例cow: cow goes "Moo")以外の追加の動物で機能する場合、追加の動物ごとに:-10
  • プログラムで「cat」という単語を使用しない場合:-15
  • プログラムfoxが「キツネの言うこと」で応答する場合:-25

一緒に行く動物と音:

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

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

## 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%ではありません。そうでなければ、コードがどれだけ長くても0のスコアを得るには10匹の動物しか必要ありません...)
ダレルホフマン

@DarrelHoffman将来のすべての課題について、そのことを心に留めておきます。

さて、あなたは首尾よく私の頭を爆発させました、そして、私はもはやキツネが言うことを知りません。+1
kirbyfan64sos

カラスは鳴きますか?
魔法のタコUr

@carusocomputingウィキペディアによると、そうです。彼らはsqualk自分で行くと思う
ブルー

7

TeaScript29-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"'/⍨ それを使用して文字列をフィルタリングします(つまり、falseの場合は空の文字列を返します)

⍵, 引数に追加する



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)

欠点:動物の名前を大文字で書き、残りを小文字で書かなければなりません。これを修正する別のバージョンを以下で探してください。このバージョンはain catをエスケープし、\x61このリストから22匹の追加の動物のコードを含みます(それだけの価値のある短い単語を持っていたすべての許可された動物):

蜂の話題7
鳥の歌8頭の
牛はMOO 9
牛のMOO 6
カラスCAW 7
犬の吠え声7
鴨いんちき9
カエルのしゃがれ声9
馬は9ヒス
豚は7 OINK
ラムメー7
ヒバリが8歌う
ライオンの轟音8
牛の低5
鳩のCOO 9
ルークCAW 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文字が使用されました。


編集:鳴き声の引用符と大文字を修正(ただし、質問は大文字と一致していません)
ドミノ

そして...ここで私の仕事は完了です。-10ボーナスで十分だったことが証明されました:)
ドミノ

3

JavaScript、81-20-15 = 46バイト50-15 = 35バイト

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

Meowの周りに二重引用符をドロップできます。
-anotherdave

いいえ、それは実際には質問の一部です
ドミノ

どの程度'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バイトのボーナスと比較して価値がありません。
グレンランダース-パーソン

@ 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

しかし、これらのバイトを取り戻すためのヒントに加えて、追加の2:文全体をif文で置き換えてください:if〜any(x-'dbu '+ 1)
slvrbld

@slvrbld、気づいてくれてありがとう、編集した後に起こった。ところで:あなたの提案は3文字ではない入力に対しては機能しません。=)
Stewie Griffin

ああ、あなたは正しい。私は猫とキツネに集中しすぎて、残りを忘れていました。
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

HALT71-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

Python 3、81 70 55 46-15 = 31バイト

15バイトを節約してくれたStewie Griffinに感謝

8バイトを節約してくれたgrcに感謝します。

文字列catを使用しないと、-15バイトになります。

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


1

Perl、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に感謝します!


明らかに必要はありませんchopideone.com/lTpShD
クリスティアンルパスク

@ w0lf「猫\ n」は=「猫」(少なくともそれは私のために仕事をしません)私はideoneのSTDINは、末尾の改行を持っていないことを推測している!
ピーターLenkefi

結構、私の例がどこが間違っていたかがわかります。次に、これを実行してコードを短縮することを検討できます。
クリスチャンルパスク

@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エンコードgz圧縮配列を使用します。これは、許可された65の動物すべてで機能することを意味しますが、私のスクリプトは巨大です。foxでも動作し、catという単語は含まれていません。


1

MATLAB、46バイト

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

確かに些細なことです。入力は単一引用符で囲む必要があります。


よくわかりませんが、ans = .. 何かを印刷することが課題である場合、一般的に受け入れられないと思います。それがコンセンサスであるかどうかはわかりませんが、使用するのは非常に一般的であるdispか、同様のものです。
スティーヴィーグリフィン

+1、ただし、私よりも短い=)
Stewie Griffin

1

Beam208206-15 = 191バイト

競争力のあるエントリではありませんが、やるのは少し楽しいです。最初の入力文字をチェックしcatます。一致しない場合、標準の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は、「ES6」と呼ばれるJavaScriptの新しいバージョンの一部であり、新しい関数の構文概要へのリンクです。ここにもあるES6のためのヒント一般的なJavaScriptのためのヒント
Downgoat

1

Haskell、52-15 = 37バイト

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

\9915バイトのボーナスを得るために、「cat」のcの代わりに使用します。


1

O22 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

Japt、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

コードにはMarkdownが破棄する印刷できない文字が含まれているため、リンクを追加してください。
ETHproductions

リンクを追加しました。また、このスニペットを実行したときU+0083U+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(crow、caw)」の長さは11です。したがって、それを「t(swan、cry)」に取り除くと、14バイト減ります。そして、明らかにそれをもっと面白くしません:(
Noodle9

@user、私が言ったように、著者がまだボーナスを改訂することを願っています。
ゼレゲス

見出しにC ++ 11と記載する必要があります。Python 2と3も常に区別されています。一方でusing大したことない、初期化子リストがあります。
カールナップ

@KarlNapfそれを指摘してくれてありがとう。
ゼレゲス

また、変更することができます#include <map>#import<map>-2バイトのために。前のスペース<は省略でき、#importいくつかの警告がスローされますが、GCCおよびMSVCが受け入れられます
カールナップ

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"'

すべてが単一のechoステートメントに結合され、 <?=

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.