Erinnerst du dich an das Kinderspiel "Ente, Ente, Gans" ? Nein? Ich auch nicht.
Die Herausforderung
- Drucken Sie das Wort "Ente" unbestimmt oft in einzelne Zeilen.
- Drucken Sie das Wort "Gans".
- Ihr Programm endet.
Die Regeln
- Versuchen Sie, das Spiel in den wenigsten Bytes zu spielen.
- Es muss mindestens eine Ente sein.
- Am Ende der Liste muss genau eine Gans stehen.
- Es muss genau ein Vogel auf jeder Linie sein. Keine leeren Zeilen.
- Der Fall der ausgegebenen Zeichenfolgen ist irrelevant.
- Leerraum innerhalb einer Zeile ist in Ordnung.
- Ihr Programm muss beendet sein.
- Ihr Programm darf nicht immer die gleiche Anzahl von Enten produzieren.
Habe Spaß!
Bitte beachten Sie: Diese Frage ist kein Duplikat des kürzesten Codes, um eine nicht deterministische Ausgabe zu erhalten
Gründe sind:
- Die Assoziation zu einem Kinderspiel
- Die definierten Start- und Endanforderungen der Ergebniszeichenfolge. In der anderen Challenge ist keine Ausgabe angegeben.
- Antworten Die andere, nicht doppelte Abfrage besteht aus einer einstelligen Anzahl von Bytes. Der Durchschnitt für dieses ist ungefähr 30 oder dort ungefähr.
- In Anbetracht der Überlappung zwischen dieser und dieser Herausforderung ist jede Code-Golf-Frage, einschließlich des "zufälligen" Tags, ein Duplikat. Sollen wir sie alle löschen?
- Die Code-Antworten für diese Herausforderung stimmen auf lächerliche Weise mit der anderen Herausforderung überein, aber die Antworten auf diese Herausforderung stimmen nicht mit dieser überein.
Antworten:
Jelly , 13 Bytes
Probieren Sie es online!
Erläuterung:
Mehr lesbare Version: Probieren Sie es online!
Gibt immer 1 oder 2 Enten zurück.
quelle
Operation Flashpoint- Skriptsprache, 48 Byte
Druckt immer eine oder zwei Enten.
random 1
Gibt eine (Gleitkomma-) Zahl zwischen 0 und 1 zurück. Diese Zahl wird als Argumentselect
zusammen mit dem Array übergeben[s,""]
. Die Zufallszahl wird dann auf die nächste Ganzzahl (entweder 0 oder 1) gerundet, und das Array-Element an diesem Index wird aus dem Array ausgewählt.Rufen Sie an mit:
Ausgabe:
Alternative 56-Byte-Version:
quelle
World of Warcraft 81 Bytes
Hier ist ein Makro, das Sie in World of Warcraft ausführen können.
quelle
/run for x=1,random(1,9)do print("Duck")end print("Goose")
Minecraft <1,13,
7254 BytesEntschuldigung, ich musste.
Anleitung:
data/functions/minecraft/ddg.mcfunction
/function ddg
in der SpielekonsoleWie es funktioniert:
Gibt das Wort "Ente" für jede Entität auf der Welt aus und anschließend das Wort "Gans". Da Entitäten ständig laichen und entlaichen, ist die Anzahl der "Enten" nicht konsistent. Ich habe
tellraw
stattdessen das viel kürzere verwendet,say
weil essay
den Namen der Entitättellraw
ausgibt , während es genau das ausgibt, was ihm gesagt wird.Bildschirmfoto
Edit: {"text": "duck"} wurde in "duck" geändert (und das selbe mit "goose")
quelle
JavaScript,
4544423937 BytesKann einen Überlauffehler verursachen.
Probier es aus
quelle
Oktave ,
3833 BytesDies ist nicht die kürzeste (es ist 36 Bytes), aber es ist mein Favorit. Die Erklärung ist unten.
Probieren Sie es online!
Einige kürzere Variationen:
Dies funktioniert im Prinzip (33 Bytes), aber die Online-Dolmetscher haben eine Zeitüberschreitung:
Das Hinzufügen einiger Bytes, um die Ausgabe zu verkürzen, ergibt 35 oder 36 Bytes:
Erläuterung:
Ich erkläre nur den letzten Zufall. Die anderen sind ähnlich, verwenden jedoch die Anzahl der Tage seit dem 1. Januar 0000 bis heute.
rand
Gibt eine Zufallszahl für das Intervall (0, 1) zurück . Somit1/rand
liefert eine Zahl größer als 1 . Da ein Bereich1:f
, in demf
ein zufälliger Gleitkommawert größer als 1 ist, mit identisch ist1:floor(f)
,1:1/rand
wird ein Bereich 1 ... x erstellt , in dem x> = 1 ist .Ich werde versuchen, dies so zu erklären, als ob Octave eine Stack-basierte Sprache wäre.
quelle
disp(['duck '+~pwd';'goose'])
? Nicht sicher, ob dies "unbestimmt" genug istPerl 5 , 20 Bytes
Zuerst praktische 26 Bytes:
Duckt sich 1 bis 9 Mal vor dem Gänsen.
Probieren Sie es online!
Aber wenn Sie viel Speicher und Zeit haben, funktioniert diese 20-Byte-Version (wie von Chris vorgeschlagen ) auch:
Dies setzt auch voraus, dass das Jahr-2038-Problem für Perl 5 gelöst ist , andernfalls ist es in 20 Jahren für 1 Sekunde ungültig.
quelle
1+$^T%9
einfach$^T
, es funktioniert immer noch, und Sie sparen 4 Bytes.Python 2 ,
3634 BytesProbieren Sie es online!
Ein Vorschlag von Kevin Cruijssen bringt uns auf 34 Bytes:
quelle
((id(id)%5)+1)
an-~(id(id)%5)
der Klammer , um loszuwerden. Tipps zum Golfen in <allen Sprachen> und Tipps zum Golfen in Python könnten interessant sein. Genieße deinen Aufenthalt!id(id)
nicht seinid(0)
oder vermisse ich etwas?id(0)
auf ein paar verschiedene Computer schaut, deutet darauf hin, dass es eine Konstante ist.id([])
. Dies sollte jedes Mal, wenn das Programm ausgeführt wird, eine unterschiedliche Liste initialisieren, die theoretisch konsistent zu unterschiedlichen Speicheradressen führen sollte.Z-Shell (+ wget & Netpbm),
168160150148145135120 BytesNicht die kürzeste Lösung, aber ich wollte dieser Herausforderung eine Art Wendung geben (inspiriert von @ AlexGs Lösung für dieses andere Problem ).
Dieses Skript generiert ein PPM-Bild mit 1-8 Bildern von Enten und einem Bild einer Gans unten in der Standardausgabe. Es lädt die beiden Quellbilder von Wikipedia herunter, sodass ein Internetzugang erforderlich ist, damit es funktioniert.
Beispielausgabe, die über pnmtojpeg in JPEG konvertiert wurde :
quelle
R , 35 Bytes
Probieren Sie es online!
rexp()
erzeugt eine Zufallszahl aus einer exponentiellen Abklingfunktion.+1
mindestens eine Ente zu gewährleisten. Alle Zeilen nach der ersten enthalten ein führendes Leerzeichen (das das Standardtrennzeichen für istcat
), dies ist jedoch zulässig.quelle
exp(-1)
bei 36,8%.\n
einen um ein Byte kürzeren. Wenn Sie die "Online ausprobieren!" Link können Sie sehen, dass der Effekt der gleiche ist.Bash ,
393837 BytesProbieren Sie es online!
Gibt eine Anzahl von Enten aus, die der Anzahl von Ziffern in einer Ganzzahl entspricht, die gleichmäßig auf [0,32767] verteilt ist (also häufig fünf Enten (eine gute Anzahl von Enten)).
Jeweils -1 Byte dank @Chris und @sch, die auf Paare von Anführungszeichen hinweisen, die ihr Gewicht nicht belasteten.
quelle
\n
mit\\n
.sed s/[0-9]/duck\\n/g<<<$RANDOM\goose
kann ein Byte abschneidensed
ist nicht ganz portabel. Auf einigen Plattformen könnten Sie mit einem einzigen Backslash davonkommen\n
. Bei anderen erhalten Sie keinen Zeilenumbruch, egal was Sie tun.Pure Bash (keine externen Dienstprogramme), 25
Basierend auf der Antwort von @ SophiaLechner druckt dies auch eine gute Anzahl von Enten .
@ OlivierDulacs Idee, die im
$
Parameter gespeicherte PID der Skript-Shell zu verwenden, spart 5 Byte.Probieren Sie es online aus .
quelle
RANDOM
zu$
5 Bytes zu rasieren? Und man könnte auch eine sehr lange Reihe von Enten tun:yes duck|head -n $$;echo goose
$$
ist akzeptabel - danke!yes duck | head -n $$;echo goose
) als Alternative gepostet (länger als deine, aber man bekommt VIELE Enten für 5 zusätzliche Zeichen ^^)Ruby , 30 Bytes
Probieren Sie es online!
Hinweis: Wirklich 31 Bytes ohne den
\n
Cheat.quelle
Bash + Coreutils,
3627 BytesDruckt zu viele Enten (zwischen 2 und
cat /proc/sys/kernel/pid_max
), dann eine Gans.Dank Digital Trauma und Olivier Dulac neun Bytes gespart.
Probieren Sie es online! (aber denken Sie daran, dass es gelegentlich abgeschnitten werden kann)
Gleiche Länge, aber ohne
echo
:Probieren Sie es online!
a
ist der Befehl append insed
und wirdq
beendet. Beide laufen nur auf der Leitung$$
, die der PID entspricht.quelle
head -n $((1+(RANDOM % 5)))
$$
anstatt$RANDOM
für meine Antwort zu verwenden . Ich denke, Sie könnten das gleiche verwenden, um Ihnen 5 Bytes zu sparen. Oh und versuchen Sie essed
auch:yes duck|sed 1$$q;echo goose
yes duck|sed $$q;echo goose
ist in Ordnung - ich glaube nicht, dass Ihr Skript jemals eine PID <1 bekommen würde.PowerShell ,
353028 BytesProbieren Sie es online! (modifizierte Version)
Erzeugt eine
Get-Random
Reihe von Elementen. Es könnte eine Weile dauern. Dies fügt eine hinzu,+1
um sicherzustellen, dass wir mindestens eine erhaltenduck
. Die geänderte Version enthält auch ein-ma
ximum-Flag von,5
damit Sie sehen können, dass das Programm wie erwartet funktioniert (die geänderte Version gibt 1, 2, 3 oder 4duck
s vor dem ausgoose
).Das Array und die einzelne Zeichenfolge verbleiben
goose
in der Pipeline, und das ImpliziteWrite-Output
gibt uns durch Zeilenumbrüche getrennte Werte frei.Sie wissen nicht, wie schwierig es für mich war, die letzte Zeile nicht in "graue Ente" zu ändern ...
quelle
0..(random)|%{'duck'};'goose'
sieht aus wie eine 29 und wird auch irgendwo bis zu [int] :: MaxValue (2,1 Milliarden) Enten vor einer Gans erzeugen. (Und0..0
druckt eine Ente)Python 2 , 54 Bytes
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 55 Byte
Probieren Sie es online!
quelle
Brachylog ,
2421 Bytes-3 Bytes dank Erik dem Outgolfer
Probieren Sie es online!
Zur Feier der Sprache des Monats mein erster Brachylog-Beitrag. Der Kontrollfluss in dieser Sprache ist cool.
Wie es funktioniert:
quelle
Geometry Dash World 2.2 Editor - 4 Objekte
Erläuterung:
Der BG-Trigger ist der zufällige Trigger des aktuellen 2.2, sodass entweder die Gruppen-ID 1 oder 2 umgeschaltet wird.
Die erste "ENTE" hat eine Gruppen-ID von 1, wodurch eine 50% ige Chance besteht, dass sie entfernt wird oder nicht (umgeschaltet).
In diesem Level gibt es kein Objekt mit der Gruppen-ID 2, daher besteht eine 50% ige Chance, dass 2 "ENTE" angezeigt werden.
So reproduzieren Sie dies:
Die erste "ENTE" hat eine Gruppen-ID von 1.
Gans und 2. Ente haben keine Gruppen-ID
Innerhalb des Zufallstriggers.
quelle
05AB1E ,
1514 BytesProbieren Sie es online!
Druckt 2, 5 oder 6 Enten und dann Gans.
-1 Byte dank @Emigna mit 'für ein einzelnes komprimiertes Wort (duck)
quelle
'М
da Ente ein einzelnes Wort ist.['ÐœTΩ#].•zíΘ•»
'Ðœ₁Ω.D.•zíΘ•»
APL (Dyalog) , 22 Bytes
1 Byte gespart dank @EriktheOutgolfer
Probieren Sie es online!
quelle
'Goose'⊣⎕←⍣(?9)⊢'Duck'
Retina , 17 Bytes
Probieren Sie es online!
Probieren Sie es online!
Druckt mit gleicher Wahrscheinlichkeit 1 oder 2 Enten.
Erläuterung
Setzen Sie die Arbeitszeichenfolge auf
duck
und drucken Sie sie mit einem nachfolgenden Zeilenumbruch (\
). Dann wird dies in eine andere Ausgangsstufe eingebunden, auf diese wird jedoch das Zufallsflag (?
) angewendet, sodass nur mit einer Wahrscheinlichkeit von 50% gedruckt wird.Ersetzen Sie das
duck
mitgoose
, das implizit am Ende des Programms gedruckt wird.Hier ist eine lustige Alternative, die 1 Ente mit 50% Wahrscheinlichkeit, 2 Enten mit 25%, 3 Enten mit 12,5% druckt ...:
quelle
Vim (Skript) unter Linux,
4643 Bytes (4946 mit:
am Zeilenanfang)Ausgeführt als
vim -S filename
oder eingefügt in Laufenvim
mit:
vor jeder Zeile.quelle
\d
über zu verwenden[0-9]
. Es sieht auch so aus, als ob vim keine nachgestellte Zeile benötigt, das können also 45 Bytes sein :)> <> ,
3122 BytesProbieren Sie es online!
-9 Bytes basierend auf der Revision von Not a Tree
quelle
l?!;
mit einem Fehler entfernen und beenden.Befunge 98 ,
383025 BytesProbieren Sie es online!
Duck
passt jetzt in eine einzelne Zeichenfolgequelle
#
in der zweiten Zeilewhitespace within a line is fine
so können Sie ein paar Anführungszeichen ausschneiden (auch wenn die Ausgabe seltsam aussieht)T-SQL ,
70 4443 Bytes (Viele Enten)Danke @Zac Faragher!
Überarbeitete Version,
54 4340 Bytes (1 oder 2 Enten)Vielen Dank @BradC!
Ich kann nicht scheinen, dieses zu erhalten, um in SQL Fiddle richtig zu laufen , aber es funktioniert gerade fein in LINQPad und in SSMS.
Ich bin mir nicht sicher, ob dies eine bekannte Einschränkung von SQL Fiddle ist oder ob ich einfach etwas falsch mache
quelle
select
zuprint
und die endgültige ersetzen'duck'select'goose'
mit'duck(linebreak)goose'
(mit einem wörtlichen Zeilenumbruch, natürlich)while rand()<.5print'duck'print'duck(linebreak)goose'
für 43 tun .while
inif
. Druckt (zufällig) entweder eine oder zwei Enten, was (glaube ich) die Herausforderung noch erfüllt.Powershell -
3130 BytesWarnung : Sie werden höchstwahrscheinlich mit einer Menge Enten enden.
Random
Umfasst die Werte von 0 bisInt32.MaxValue
. Je nachdem, wie zufällig Ihre Zahl ist, kann dies eine Menge Quacksalber sein.quelle
$
vor(Random)
. Probieren Sie es online!Spaltung ,
2419 BytesProbieren Sie es online!
-5 Bytes dank Martin Ender
quelle
Brachylog , 21 Bytes
Probieren Sie es online!
Hey, die Sprache des Monats wird inaktiv, lasst uns die Dinge ein wenig aufmuntern!
quelle
Befunge
5735 Bytes (Umfang des gesamten Feldes ist19x317x2 Zeichen) Vielen Dank an Karhell für die Verbesserung.In der zweiten Zeile werden Ente und eine neue Zeile (rückwärts) auf den Stapel gelegt und als Zeichenfolge ausgegeben. Nach dieser 75% igen Chance, zum Start zurückzukehren und erneut Ente zu drucken, drucken 25% (wenn sich das Fragezeichen dafür entscheidet, nach unten zu gehen) Gans und hören auf.
quelle
55+"kcud",,,,,#v?(linebreak here) @,,,,,"goose"<
würden Sie Ihren Code auf 35 Bytes