Katze miaut"

31

cat geht "Meow"

Wir alle kennen das Konzept eines catProgramms. Der Benutzer gibt etwas ein, es wird an den Benutzer zurückgemeldet. Einfach. Aber alle catProgramme, die ich bisher gesehen habe, haben eine Tatsache übersehen: cat"Meow". So Ihre Aufgabe ist es, ein Programm , das kopiert alle zu schreiben , STDINum STDOUT SOFERN der Eingang cat, in welchem Fall das Programm ausgeben soll cat goes "Meow".

Wertung

Das ist , also ist Ihre Punktzahl Ihre Byteanzahl, mit ein paar Modifikatoren:

  • Wenn Ihr Programm für andere zusätzliche Tiere als cat(z. B. cow: cow goes "Moo") funktioniert , für jedes weitere Tier: -10
  • Wenn Ihr Programm das Wort "cat" nicht verwendet: -15
  • Wenn Ihr Programm foxmit "Was sagt der Fuchs" antwortet : -25

Tiere und Geräusche, die zusammenpassen:

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

Alles andere auf dieser Liste ist erlaubt.

Regeln

  • Es gelten Standardlücken
  • Du darfst nichts dazu schreiben STDERR
  • Sie können einfache Anführungszeichen / keine Anführungszeichen anstelle von doppelten Anführungszeichen verwenden.

Bestenliste

Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:

## Language Name, N bytes

Wo Nist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

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

Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:

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

Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:

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

ETHproductions
quelle
16
Für die Boni: Was sagt der Fuchs?
Stewie Griffin
1
Für die Boni: Kann jedes zusätzliche Tier einzeln sein, oder müssen "Bienen" immer im Plural sein, wie in Ihrer Liste?
ProgramFOX
2
Katzen sagen Miau. .
Addison Crump
1
Können Sie anstelle von Anführungszeichen auch einfache Anführungszeichen verwenden? Können Sie auch auf stderr ausgeben?
Blau

Antworten:

17

Pyth, 231-255 = -24 Bytes

-24 * 10 zusätzliche Tiere, -15 für keine "Katzen" -Saite

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

Link zum Code

Pseudocode

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

Tiere, die es kennt:

{'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"}
Blau
quelle
16
Ich bin der Meinung, dass der Bonus -10% und nicht -10 Byte betragen sollte. Das würde eine abnehmende Rendite bringen, um solchen Missbräuchen vorzubeugen. (Und das sind jedes Mal 10% multipliziert, nicht 10% der ursprünglichen Summe, sonst bräuchten Sie nur 10 Tiere, um eine Punktzahl von 0 zu erhalten, egal wie lang der Code war ...)
Darrel Hoffman
@ DarrelHoffman Ich werde dies bei allen zukünftigen Herausforderungen berücksichtigen.
Du hast erfolgreich meinen Kopf zum Platzen gebracht und ich weiß nicht mehr, was der Fuchs sagt. +1
kirbyfan64sos
Der Rabe krächzt?
Magic Octopus Urn
@carusocomputing Laut Wikipedia ist dies der Fall. Ich denke, sie gehen squalkselbst
Blue
7

TeaScript , 29-15 = 14 Bytes

Verwendet keine Zeichenfolge cat.

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

"Was sagt der Fuchs" (Länge = 21) ist länger als der Bonus wert ist.

unerschrockener Kodierer
quelle
Der Fuchsbonus lohnt sich jetzt!
5

CJam, 12 Bytes

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

Das Programm ist 27 Byte lang und verwendet kein Wort cat( -15 Byte ).

Probieren Sie es inline im CJam-Interpreter aus .

Wie es funktioniert

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.
Dennis
quelle
10
Ich mag den Smiley:)
ETHproductions
4

APL (Dyalog) , 28-15 = 13 Bytes

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

Eingabe gefolgt von, goes "Meow"wenn die Eingabe tacumgekehrt ist.

Probieren Sie es online!

{} Anonyme Funktion

⌽'tac' Kehre die Saite um (um den Bonus von -15 zu erhalten, indem du die Zeichen vermeidest cat)

⍵≡ Boolescher Wert für die Identität des Arguments

' goes "Meow"'/⍨ Verwenden Sie dies, um die Zeichenfolge zu filtern (dh gibt eine leere Zeichenfolge zurück, wenn sie falsch ist).

⍵, an das Argument anhängen

Adam
quelle
3

Stapel , 51 Bytes

'' input dup 'cat' = { 'cat goes "meow"' } if print
BookOwl
quelle
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)

Nachteil: Sie müssen den Namen des Tieres mit dem ersten Buchstaben in Großbuchstaben und den Rest in Kleinbuchstaben schreiben. Suchen Sie unten nach einer anderen Version, die dieses Problem behebt. Diese Version entgeht dem ain cat mit \x61und enthält Code für die 22 zusätzlichen Tiere aus dieser Liste (alle erlaubten Tiere, die kurz genug waren, um es wert zu sein):

bee buzz 7
Vogelgesang 8
Rinder Moo 9
Kuh muhen 6
Krähe caw 7
Hund bellen 7
Ente quaken 9
Frosch quaken 9
Pferd zischen 9
Schwein oink 7
Lamm baa 7
Lerche 8 singen
Gebrüll 8 Löwe
Ochse niedrig 5
Taube gurren 9
Saatkrähe caw 7
Siegel Rinde 8
Schafe baa 8
Schlange zischen 9
Schwan weinen 7
Tiger brüllen 9
Wal singen 9

(Vielen Dank an meinen Freund, der mir bei der mühsamen Erstellung dieser Liste geholfen hat.)

Ungolfed-Code:

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

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

Erste Version, 45 Bytes - 15 Bonus = 30

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

Ja, ich weiß. Ich ging von 30 auf 29 mit all dieser zusätzlichen Arbeit. Es hat Spaß gemacht!

Version, die vollständige Eingabe in Kleinbuchstaben ermöglicht, 294 Bytes - 235 Bonus = 59

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

Ich habe auch versucht, Gehäuse aus dem Daten-Array mit zu entfernen, .join().toLowerCase().split(',')aber es dauerte stattdessen 297 Zeichen.

Domino
quelle
Bearbeiten: Feste Anführungszeichen und Großbuchstaben auf Meow (obwohl die Frage nicht mit Großbuchstaben übereinstimmt)
Domino
Und ... meine Arbeit hier ist getan, was beweist, dass der -10 Bonus gerade genug war :)
Domino
3

JavaScript, 81 - 20 - 15 = 46 Bytes 50 - 15 = 35 Bytes

(o=prompt()=="ca"+"t")&&o+=' goes "Meow"';alert(o)
Benutzername.ak
quelle
Sie können die Anführungszeichen um Meow setzen .
anotherdave
Nein, das ist eigentlich Teil der Frage
Domino
Wie wäre es 'c\at'statt 'ca'+'t'?
Gustavo Rodrigues
alert({'c\at':'c\at goes "Meow"',fox:'What does the fox say'}[a=prompt()]||a). Warum nicht einmal die Warnung fallen lassen? Das Ergebnis wird bereits an die Konsole zurückgegeben.
Gustavo Rodrigues
2

GNU sed, 37-15 = 22 Bytes

sed -r 's/^(\x63at)$/\1 goes "Meow"/'
user2064000
quelle
sed '/ ^ c [a] t $ / s / $ / goes "Meow" /' spart ein paar Bytes. Der neue 5% -Bonus ist jedoch wertlos im Vergleich zum ursprünglichen 15-Byte-Bonus für das Fehlen von "Katze".
Glenn Randers-Pehrson
@ GlennRanders-Pehrson Nicht mehr!
2

MATLAB, 58-15 = 43 Bytes

Ziemlich einfach, mit Bonus für die Nichtverwendung catim Code:

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

Die Eingabe muss in einfachen Anführungszeichen angegeben werden: ' '.

Stewie Griffin
quelle
In der aktuellen Form wird dies nicht korrekt ausgegeben, wenn 'cat' als Eingabe angegeben wird. Sie haben wahrscheinlich x = in der if-Anweisung vergessen .
Slvrbld
Aber ich gebe Ihnen auch einen Tipp, um diese Bytes und eine weitere 2 zurückzugewinnen: Ersetzen Sie Ihre gesamte if-Anweisung durch: if ~ any (x-'dbu '+ 1)
slvrbld
@slvrbld, danke, dass du es bemerkt hast. Übrigens: Ihr Vorschlag funktioniert nicht für Eingaben mit nicht drei Zeichen. =)
Stewie Griffin
Ah, du hast recht. Ich war zu sehr auf die Katze und den Fuchs konzentriert und vergaß den Rest.
Slvrbld
2

Javascript, 117 Bytes

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]+'"')

Ich habe hier definitiv nicht gewonnen, aber ich habe viele zusätzliche Tiere gedeckt.

Javascript, 31 Bytes

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

HALT , 71-15 = 56 Bytes

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

HALT ist eine Sprache, die ich (@Downgoat) für die Verarbeitung von Strings entwickelt habe. Das einzige Problem ist, dass sie etwas lang ist

Formatiert

1              IF "cat" 2 ELSE 3
2 TYPE "MEOW"; HALT
3 SET 0      ; GOTO 6
4 INCREMENT  ; STORE 0
Böse Schafe
quelle
2

Python 3, 81 70 55 46 - 15 = 31 Bytes

Vielen Dank an Stewie Griffin für die Einsparung von 15 Bytes

Danke an grc für das Speichern von 8 Bytes.

Wenn Sie die Zeichenfolge nicht verwenden, erhalten Sie cat-15 Byte.

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

JavaScript, 48 - 15 = 33 Bytes

Verwendet \x61als Ersatz für die ain cat.

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

Perl, 46-15 = 31

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

Ruby, 49 46 50 - 15 = 35 Bytes

Ich denke, es ist ziemlich einfach. Ich benutze keine Katze.

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

Edit: Danke für @ w0lf für das Speichern von 3 Bytes!

Peter Lenkefi
quelle
Anscheinend gibt es keine Notwendigkeit für chop: ideone.com/lTpShD
Cristian Lupascu
@ w0lf "cat \ n"! = "cat" (Zumindest funktioniert es bei mir nicht) Ich vermute, dass Ideones STDIN keine nachgestellte Newline hat
Peter Lenkefi
Fairerweise sehe ich, wo mein Beispiel falsch war. Dann könnten Sie überlegen, dies zu tun , um den Code zu verkürzen.
Cristian Lupascu
@PeterLenkefi, in deinem Code sind noch ein paar Katzen übrig ... Hast du das Update vergessen oder ...?
Stewie Griffin
@StewieGriffin Verdammt, ich habe es getan! Mein Multitasking ist heute nicht oben. In 5 Minuten aktualisiere ich es jedoch erneut.
Peter Lenkefi
1

PHP, 1204 - (10 * 64) - 15 - 20 = 529 Bytes

<?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);

Ich benutze eine JSON-codierte gz-komprimierte Reihe von Tierstimmen. Das heißt, es funktioniert mit allen 65 erlaubten Tieren, aber mein Skript ist riesig. Funktioniert auch mit Fuchs und enthält nicht das Wort Katze.

Felix Eve
quelle
1

MATLAB, 46 Bytes

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

Zugegebenermaßen trivial. Die Eingabe muss in einfachen Anführungszeichen erfolgen.

Christopher Creutzig
quelle
Ich bin mir nicht sicher, aber ich denke, es ans = .. wird allgemein nicht akzeptiert, wenn die Herausforderung darin besteht, etwas zu drucken. Ich bin nicht sicher, ob es ein Konsens ist, aber es ist durchaus üblich, dispetwas Ähnliches zu verwenden.
Stewie Griffin
+1 obwohl, für kürzer als meins =)
Stewie Griffin
1

Strahl , 208, 206 - 15 = 191 Bytes

Kein Wettbewerbsbeitrag, aber ein bisschen Spaß zu machen. Es prüft die ersten Buchstaben der Eingabe gegen cat. Wenn eine Nichtübereinstimmung auftritt, wird eine Verknüpfung zum Standard-Cat-Programm hergestellt. Wenn es passt, wird es angehängtgoes "Meow"

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

Java = 222 Bytes (komprimiert)

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

Oder ich könnte es dekomprimieren.

Batch = 52 Bytes

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

quelle
1

Javascript: 48 Zeichen, 48 Bytes

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

Prüfung

=>"Hund"

<="Hund"

=>"Katze"

<="Katze miaut"

Fuzzyzilla
quelle
Gute Arbeit! Sie könnten die Klammern fallen lassen s=="cat". Auch die Schnur der Katze soll sein cat goes "Meow", 'function(s){return s=="cat"?'cat goes "Meow"':s}ist also völlig gültig.
ETHproductions
Wenn Sie noch mehr sparen s=>s=="cat"?s+' goes "Meow"':s
möchten
@ETHproductions Oooh, das ist gut! Ich kenne diese Art von Syntax nicht, vielleicht ein Link?
Fuzzyzilla
@Fuzzyzilla ist Teil einer neuen Version von JavaScript mit dem Namen "ES6", einem Link zur neuen Funktionssyntax und einer Übersicht . Hier finden Sie auch Tipps für ES6 und Tipps für JavaScript im Allgemeinen
Downgoat
1

Haskell, 52-15 = 37 Bytes

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

Verwendung \99als Ersatz für c in "cat", um den 15-Byte-Bonus zu erhalten.

arjanen
quelle
1

O , 22 16 14 Bytes

29 Bytes - 15

Q "tac" `J = J" geht "Meow" + Q?

Es ist lang und kann mehr golfen werden

Phase
quelle
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

Endlich konnte ich meinen neuen funktionalen Python 2-Eintrag auf Pyth umstellen. Es schlägt den Spitzenkandidaten nicht. Es hat sich herausgestellt, dass das Zusammenzippen von mehr Tieren zu einem größeren Wörterbuch die Punktzahl schneller verringert, als wenn Tiere geschickt mit Geräuschen in Verbindung gebracht werden. Dies unterstützt 8 Tiere zusätzlich zur Katze: Nashorn, Okapi, Elch, Löwe, Tiger, Dachs, Nilpferd und Hirsch.

Probieren Sie es online aus

Quintopie
quelle
1

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

Japt zum ersten Mal ausprobieren:

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

ƒsollte durch ein nicht druckbares Zeichen U+0083 ersetzt werden

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

Alte Lösung:

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

Probieren Sie es hier aus

Generischer Benutzer
quelle
Sehr schön! Tut mir leid, dass die Backslashes notwendig sind, ich dachte, ich hätte das behoben.
ETHproductions
Da der Code ein nicht druckbares Zeichen enthält, das Markdown verwirft, können Sie bitte einen Link hinzufügen?
ETHproductions
Der Link wurde hinzugefügt, auch warum wird U+0083ersetzt U+0192oder ƒwenn Sie dieses Snippet ausführen:"\u0083".charCodeAt()
Generischer Benutzer
Ich habe keine Ahnung. Ich kann das scheinbar nicht reproduzieren.
ETHproductions
1

Pyth, 26-15 (keine "Katze") = 11 Bytes

Mein erstes Pyth-Programm!

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

Probieren Sie es hier aus

Erklärung

   _"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.
DJgamer98
quelle
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());}

Kompiliert gut mit VisualStudio. GCC möchte, dass ich #include <string>und #include <cstdio>. Es wäre kürzer, wenn ich keine Boni bekommen würde, aber ich hoffe immer noch, dass der Autor die Boni überarbeitet. Ich kann mir keine Sprache cow -> moovorstellen, in der die Definition viel kürzer als 10 Byte ist. Minenkosten- 3+key+valueBytes für zusätzliche Tier- und flache 22+17Bytes zum Definieren der Struktur und so weiter.

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());
}
Zereges
quelle
"t (crow, caw)" hat eine Länge von 11. Wenn Sie also "t (swan, cry)" loswerden, werden 14 Byte gelöscht. Und es macht zugegebenermaßen weniger Spaß :(
Noodle9
@user, Wie gesagt, ich hoffe immer noch, dass der Autor die Boni überarbeitet.
Zereges
Sie sollten C ++ 11 in der Überschrift angeben. Python 2 und Python 3 werden auch immer unterschiedlich notiert. Während das usingkeine große Sache ist, ist die Initialisierungsliste.
Karl Napf
@ KarlNapf Danke für den Hinweis.
Zereges
Sie können auch ändern , #include <map>um #import<map>für -2 Bytes. Das Leerzeichen davor <kann weggelassen werden und #importwirft einige Warnungen aus, wird aber als GCC und MSVC akzeptiert
Karl Napf
0

Pyth, 31-15 = 16 Bytes

Sie können es hier ausprobieren

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

Erklärung:

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
Adnan
quelle
1
C99kann durch ersetzt werden \C. Es ist immer noch +\C"at"so, dass Sie den Bonus behalten können.
klatschen
0

C 76 Bytes

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

PHP, 70-15 = 55 Bytes

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

(gespeichert als ISO-8859-1)

Verwendet invertierte undefinierte Konstanten als String-Literale:

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

Alles ist in einer einzigen Echo-Anweisung zusammengefasst, die mit Kurzschrift versehen ist <?=

Fabian Schmengler
quelle