Ente, Ente, Gans!

58

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.
AJFaraday
quelle
11
Könnten Sie unbestimmt definieren? Konnte es entweder null oder eins bedeuten?
rekursive
1
Bitte definieren Sie, wie zufällig dies generiert werden soll. Gleichmäßige Reichweite oder mit exponentiellem Rückgang?
HyperNeutrino
@recursive Nein, aber lass uns mit einer funktionierenden Definition fortfahren ... Das Programm präsentiert nicht immer die gleiche Anzahl von Enten.
AJFaraday,
2
Wenn ich als Minnesotaner spreche, was ist, wenn ich stattdessen "Ente, Ente, graue Ente" drucke? :)
Mike Hill
1
@ jpmc26 Ich bin mir sicher, dass es noch andere gibt. Sie hätten es zunächst mit anderen spielen müssen.
AJFaraday

Antworten:

9

Jelly , 13 Bytes

2X“¢;ÆS»ẋ“ʋ¢»

Probieren Sie es online!

Erläuterung:

2X“¢;ÆS»ẋ“ʋ¢»

2X             Random number (1 or 2)
  “¢;ÆS»       Compressed string equivalent to "duck\n"
        ẋ      Repeat the "duck\n" that random number of times
         “ʋ¢»  Compresses string equivalent to "goose"
               Implicitly concatenated and returned

Mehr lesbare Version: Probieren Sie es online!

Gibt immer 1 oder 2 Enten zurück.

user202729
quelle
Glückwunsch! Ich habe buchstäblich keine Ahnung, wie das funktioniert!
AJFaraday
@ AjFaraday Ich ging voran und fügte eine Erklärung für Sie
PunPun1000
@ PunPun1000 Sorry, aber was ist der Stack? Jelly ist eine implizite Programmiersprache.
user202729
@ user202729 Hoppla, ich habe Jelly und 05AB1E in meinem Kopf durcheinander gebracht. Könnten Sie es bitte bearbeiten, um diesen Fehler zu beheben? Entschuldigung
PunPun1000
Es gibt eine implizite Verkettung in Jelly? Yay!
MilkyWay90
43

Operation Flashpoint- Skriptsprache, 48 Byte

f={s="duck\n";s+([s,""]select random 1)+"goose"}

Druckt immer eine oder zwei Enten.

random 1Gibt eine (Gleitkomma-) Zahl zwischen 0 und 1 zurück. Diese Zahl wird als Argument selectzusammen 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:

hint call f

Ausgabe:

Alternative 56-Byte-Version:

f={s="duck\n";format[s+"%1goose",[s,""]select random 1]}
Steadybox
quelle
3
Es freut mich immer, wenn jemand dies auf PCG verwendet.
Nit
Nun, ich habe vergessen, dass dieses Spiel existiert.
Caimen
38

World of Warcraft 81 Bytes

Hier ist ein Makro, das Sie in World of Warcraft ausführen können.

/run for x=1,random(1,9) do SendChatMessage("Duck") end; SendChatMessage("Goose")
Kelly Lowder
quelle
11
Oh mein Herr ... Warum habe ich nie daran gedacht.
Magic Octopus Urn
4
PVCG (Programmieren von Videospielen und Code Golf). Operation Flashpoint war eine Sache, aber WoW? Ich warte auf die Minecraft- und Factorio-Lösungen dafür.
Brain Guider
2
@AnderBiguri Ich vermute, das Minecraft würde man etwas schlechter machen als 81 Bytes (Blöcke?))
Chris
5
Dies sollte funktionieren und Sie auf 58 Bytes bringen:/run for x=1,random(1,9)do print("Duck")end print("Goose")
Gastropner
35

Minecraft <1,13, 72 54 Bytes

Entschuldigung, ich musste.

Anleitung:

  • Erstelle eine neue Minecraft-Welt im Kreativmodus
  • Suchen Sie den Speicherordner für diese Welt und geben Sie den folgenden Code ein data/functions/minecraft/ddg.mcfunction
  • Führen Sie /function ddgin der Spielekonsole

Wie 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 tellrawstattdessen das viel kürzere verwendet, sayweil es sayden Namen der Entität tellrawausgibt , während es genau das ausgibt, was ihm gesagt wird.

execute @e ~ ~ ~ tellraw @a "duck"
tellraw @a "goose"

Bildschirmfoto

Bildbeschreibung hier eingeben

Edit: {"text": "duck"} wurde in "duck" geändert (und das selbe mit "goose")

FlyingPiMonster
quelle
1
Schön. Wir brauchen mehr Minecraft in PPCG.
BradC
9
Erwähnenswert ist, dass Sie (der Spieler) eine Einheit auf der Welt sind, sodass die Anzahl der Enten niemals 0 sein kann (selbst wenn es keine feindlichen oder passiven Mobs gäbe).
BradC
1
@BradC Es sollte vollständige Herausforderungen geben, die auf Minecraft basieren.
Tox123
17

JavaScript, 45 44 42 39 37 Bytes

Kann einen Überlauffehler verursachen.

f=_=>`duck
${new Date%2?f():`goose`}`

Probier es aus

o.innerText=(
f=_=>`duck
${new Date%2?f():`goose`}`
)()
<pre id=o></pre>

Zottelig
quelle
14

Oktave , 38 33 Bytes

Dies ist nicht die kürzeste (es ist 36 Bytes), aber es ist mein Favorit. Die Erklärung ist unten.

disp(['duck '+~(1:1/rand)';'goose'])

Probieren Sie es online!


Einige kürzere Variationen:

Dies funktioniert im Prinzip (33 Bytes), aber die Online-Dolmetscher haben eine Zeitüberschreitung:

disp(['duck '+~(1:now)';'goose'])

Das Hinzufügen einiger Bytes, um die Ausgabe zu verkürzen, ergibt 35 oder 36 Bytes:

disp(['duck '+~(7e5:now)';'goose'])   % Works on octave-online.net
disp(['duck '+~(7.3e5:now)';'goose']) % Works on tio.run

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.

randGibt eine Zufallszahl für das Intervall (0, 1) zurück . Somit 1/randliefert eine Zahl größer als 1 . Da ein Bereich 1:f, in dem fein zufälliger Gleitkommawert größer als 1 ist, mit identisch ist 1:floor(f), 1:1/randwird 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.

      'duck '                           % Push the string 'duck ' to the stack
               (1:1/rand)               % Push a vector 1... floor(1/rand)
              ~(1:1/rand)'              % Negate the vector (making it all zeros)
                                        % and transpose it.
             +                          % Add 'duck ' with the vertical vector of zeros
                                        % to implicitly duplicate the string r times
     [                    ;'goose']     % Push the string 'goose' and concatenate
                                        % vertically with the rest
disp(                              )    % Display it all.
Stewie Griffin
quelle
disp(['duck '+~pwd';'goose'])? Nicht sicher, ob dies "unbestimmt" genug ist
Luis Mendo
12

Perl 5 , 20 Bytes

Zuerst praktische 26 Bytes:

Duckt sich 1 bis 9 Mal vor dem Gänsen.

say"Duck
"x(1+$^T%9),Goose

Probieren Sie es online!

Aber wenn Sie viel Speicher und Zeit haben, funktioniert diese 20-Byte-Version (wie von Chris vorgeschlagen ) auch:

say"Duck
"x$^T,Goose

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.

Tonne Hospel
quelle
Wenn Sie ändern 1+$^T%9einfach $^T, es funktioniert immer noch, und Sie sparen 4 Bytes.
Chris
@chris Du hast offensichtlich mehr Gedächtnis als ich. Trotzdem nehme ich Ihren Vorschlag an, da es vernünftige Computer gibt, auf denen es funktionieren wird. Vielen Dank.
Ton Hospel
12

Python 2 , 36 34 Bytes

print"duck\n"*((id(id)%5)+1),"goose"

Probieren Sie es online!

Ein Vorschlag von Kevin Cruijssen bringt uns auf 34 Bytes:

print"duck\n"*-~(id(id)%5),"goose"
Greg Fuller
quelle
3
Willkommen auf der Seite und schöne erste Antwort!
Caird Coinheringaahing
Willkommen bei PPCG! Sie können Golf spielen zwei Bytes durch eine Änderung ((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!
Kevin Cruijssen
1
Kann id(id)nicht sein id(0)oder vermisse ich etwas?
Jonathan Frech
@Johnathan, der id(0)auf ein paar verschiedene Computer schaut, deutet darauf hin, dass es eine Konstante ist.
user2699
1
Etwas intuitiver und es wären keine Bytes mehr aufzurufen id([]). Dies sollte jedes Mal, wenn das Programm ausgeführt wird, eine unterschiedliche Liste initialisieren, die theoretisch konsistent zu unterschiedlichen Speicheradressen führen sollte.
jpmc26
11

Z-Shell (+ wget & Netpbm), 168 160 150 148 145 135 120 Bytes

d(){wget -O- bit.ly/$1|jpegtopnm|pamscale -w 64 -h 64};d DckDkGo|pnmtile 64 $[(RANDOM&7+1)*64]|pnmcat -tb - <(d g005eGG)

Nicht 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 :

Bildbeschreibung hier eingeben

lucasb
quelle
1
Das hat meinen Tag total verschönert!
AJFaraday
Ich habe gerade festgestellt, dass Sie dieselbe Person sind, die diese andere Herausforderung vorgeschlagen hat, mit der ich in Verbindung stand. xD Nun, ich bin froh, dass dir das gefallen hat! = D
lucasb
Ja, es gibt einige Themen in meinen Code Golf Herausforderungen :) Ich sollte auf jeden Fall Bonuspunkte für bildliche Antworten geben.
AJFaraday
Ist das nicht eine Standardlücke, um externe Ressourcen zu bekommen?
MilkyWay90
10

R , 35 Bytes

cat(rep("duck
",rexp(1)+1),"goose")

Probieren Sie es online!

rexp()erzeugt eine Zufallszahl aus einer exponentiellen Abklingfunktion. +1mindestens eine Ente zu gewährleisten. Alle Zeilen nach der ersten enthalten ein führendes Leerzeichen (das das Standardtrennzeichen für ist cat), dies ist jedoch zulässig.

user2390246
quelle
1
Die Wahrscheinlichkeit, mehr als eine Ente auszugeben, liegt exp(-1)bei 36,8%.
Giuseppe
Sie werden aufgefordert, es in jeder Zeile auszudrucken. Ich denke, Sie sollten "\ n" zu Ihrer "Ente"
hinzufügen
3
@stuartstevenson Hier habe ich einen wörtlichen Zeilenumbruch verwendet, anstatt \neinen um ein Byte kürzeren. Wenn Sie die "Online ausprobieren!" Link können Sie sehen, dass der Effekt der gleiche ist.
user2390246
Auf einer DOS / Windows-Box wären dies immer noch zwei (2) Bytes. 0x0d0a
beleuchtet
10

Bash , 39 38 37 Bytes

sed s/[0-9]/duck\\n/g<<<$RANDOM\goose

Probieren 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.

Sophia Lechner
quelle
1
Willkommen bei PPCG!
Steadybox
1
Sie können loszuwerden der einfachen Anführungszeichen ein Byte speichern, solange Sie ersetzen \nmit \\n.
Chris
1
Gute Idee. Sie können etwas Ähnliches nur mit bash-Konstrukten und ohne sed für 30 Bytes tun .
Digital Trauma
1
sed s/[0-9]/duck\\n/g<<<$RANDOM\goosekann ein Byte abschneiden
sch
1
Das sedist 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.
Tripleee
9

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.

echo "${$//?/duck
}"goose

Probieren Sie es online aus .

Digitales Trauma
quelle
1
Wenn Sie davon ausgehen, dass Sie ein Programm starten, erhält es jedes Mal eine andere PID. In den meisten Fällen sind es 5 Ziffern, aber nicht immer. daher: Wechsel RANDOMzu $5 Bytes zu rasieren? Und man könnte auch eine sehr lange Reihe von Enten tun:yes duck|head -n $$;echo goose
Olivier Dulac
@OlivierDulac ja, ich denke die Verwendung $$ist akzeptabel - danke!
Digital Trauma
Bitte schön! Ich habe meine andere Version ( yes duck | head -n $$;echo goose) als Alternative gepostet (länger als deine, aber man bekommt VIELE Enten für 5 zusätzliche Zeichen ^^)
Olivier Dulac
8

Ruby , 30 Bytes

puts"duck
"*rand(1..9)+"goose"

Probieren Sie es online!

Hinweis: Wirklich 31 Bytes ohne den \nCheat.

Turophile
quelle
Eigentlich bin ich mir nicht sicher, ob es ein Betrug ist.
AJFaraday
8

Bash + Coreutils, 36 27 Bytes

yes duck|sed $$q;echo goose

Druckt 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:

yes duck|sed $${agoose'
q}'

Probieren Sie es online!

aist der Befehl append in sedund wird qbeendet. Beide laufen nur auf der Leitung $$, die der PID entspricht.

Chris
quelle
Bash hat Modulo, aber das wird die Größe erhöhen. Tryhead -n $((1+(RANDOM % 5)))
Tripleee
@tripleee Da dies Codegolf ist, ist es vorzuziehen, die Größe der Ausgabe gegenüber der Größe des Codes zu erhöhen. Und 132767 Enten ist ausgesprochen vernünftig im Vergleich zu der Milliarde oder mehr, die Sie anderswo sehen;)
Chris
1
Sicher, ich hoffe nur hilfreich zu sein, wenn jemand diese bahnbrechende Forschung eines Tages in die Praxis umsetzen möchte. Wie TIO . 44 Bytes mit einigen Leerzeichen herausgenommen.
Tripleee
@OlivierDulac schlug vor, $$anstatt $RANDOMfür meine Antwort zu verwenden . Ich denke, Sie könnten das gleiche verwenden, um Ihnen 5 Bytes zu sparen. Oh und versuchen Sie es sedauch:yes duck|sed 1$$q;echo goose
Digital Trauma
In der Tat yes duck|sed $$q;echo gooseist in Ordnung - ich glaube nicht, dass Ihr Skript jemals eine PID <1 bekommen würde.
Digitales Trauma
7

PowerShell , 35 30 28 Bytes

,"duck"*((Random)+1)
"goose"

Probieren Sie es online! (modifizierte Version)

Erzeugt eine Get-RandomReihe von Elementen. Es könnte eine Weile dauern. Dies fügt eine hinzu, +1um sicherzustellen, dass wir mindestens eine erhalten duck. Die geänderte Version enthält auch ein -maximum-Flag von, 5damit Sie sehen können, dass das Programm wie erwartet funktioniert (die geänderte Version gibt 1, 2, 3 oder 4 ducks vor dem aus goose).

Das Array und die einzelne Zeichenfolge verbleiben goosein der Pipeline, und das Implizite Write-Outputgibt 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 ...

AdmBorkBork
quelle
Diese Variante klingt ziemlich lustig und ist definitiv eine Code-Herausforderung wert ... Ich empfehle Ihnen, ein paar Tage zu warten und sie als eigene Herausforderung zu veröffentlichen :)
AJFaraday
1
@AdmBorkBork, dieser Minnesotan ist dieser Gruppe beigetreten, um nur +1 für deine graue Ente zu geben.
Milwrdfan
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. (Und 0..0druckt eine Ente)
TessellatingHeckler
@TessellatingHeckler Danke, aber ich habe mir gerade eine 28-Byte-Version ausgedacht. :)
AdmBorkBork
6

Python 2 , 54 Bytes

from random import*
print"duck\n"*randint(1,9)+"goose"

Probieren Sie es online!

Quintec
quelle
@ JonathanAllan danke :)
Quintec
6

Brachylog , 24 21 Bytes

-3 Bytes dank Erik dem Outgolfer

"duck"ẉ4ṙ0∧"goose"w∨↰

Probieren Sie es online!

Zur Feier der Sprache des Monats mein erster Brachylog-Beitrag. Der Kontrollfluss in dieser Sprache ist cool.

Wie es funktioniert:

"duck"ẉ4ṙ0∧"goose"w∨↰
"duck"ẉ                 print duck with a new line
       4ṙ               choose a random number in the range is [0, 4]
         0              verify it equals zero
          ∧             and (short circuits)
           "goose"w     print goose without a newline
                   ∨    or (if it did not equal zero)
                    ↰   repeat the procedure
PunPun1000
quelle
Also, wenn ich das richtig lese, liest es von links nach rechts, von unten nach oben?
AJFaraday
2
Die Sprache versucht, eine logische Wahrheit zu finden, indem sie nur die erste Zeile des Programms verwendet. Mein Programm sagt "Überprüfen Sie die zweite Zeile, dann drucken Sie Gans". Dann steht in der zweiten Zeile "Ente drucken, dann entweder eine Zufallszahl von 0 bis 4 als 0 validieren oder diese Zeile erneut validieren", also technisch gesehen nur die oberste Zeile von links nach rechts, dann alle Prädikate, die Sie von dort
aufrufen
Cool, es ist so interessant herauszufinden, wie neue Sprachen funktionieren. Es ist in meinem Posteingang angekommen, aber ich bin nicht sicher, ob es daran liegt, dass ich die Frage gestellt habe oder dass ich hier bereits einen Kommentar abgegeben habe.
AJFaraday
Sie können die beiden Prädikate wie folgt zusammenführen und mich binden.
Erik der Outgolfer
6

Geometry Dash World 2.2 Editor - 4 Objekte

Bild des Geometriestrichniveaus

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.

Bildbeschreibung hier eingeben

Gans und 2. Ente haben keine Gruppen-ID Bildbeschreibung hier eingeben

Innerhalb des Zufallstriggers. Bildbeschreibung hier eingeben

MilkyWay90
quelle
Ich spüre ein Thema für diese Herausforderung
Benjamin Urquhart
@BenjaminUrquhart Was?
MilkyWay90
Es gibt auch Einreichungen für Word of Warcraft, Minecraft und ein anderes Spiel.
Benjamin Urquhart
2
@ BenjaminUrquhart Besser finden Sie mehr Spiele zu beantworten
MilkyWay90
5

05AB1E , 15 14 Bytes

'Ðœ₁Ωи`.•zíΘ•»

Probieren Sie es online!

Druckt 2, 5 oder 6 Enten und dann Gans.

-1 Byte dank @Emigna mit 'für ein einzelnes komprimiertes Wort (duck)

Kaldo
quelle
1
Sie können verwenden, 'Ðœda Ente ein einzelnes Wort ist.
Emigna
1
Schlägt meine:['ÐœTΩ#].•zíΘ•»
Magic Octopus Urn
@MagicOctopusUrn Ich mag Ihren Endlosschleifenansatz wirklich. Ihre Antwort ist definitiv mehr im Geiste der Herausforderung (oder was sollte es gewesen sein?), Da es eine unendliche Menge von Enten ausgeben kann.
Kaldo
@ Kaldo immer noch, 15 Bytes zu Ihnen verliert;)
Magic Octopus Urn
1
Alternative 14-byter:'Ðœ₁Ω.D.•zíΘ•»
Magic Octopus Urn
5

Retina , 17 Bytes

?\\K`duck
K`goose

Probieren Sie es online!

Probieren Sie es online!

Druckt mit gleicher Wahrscheinlichkeit 1 oder 2 Enten.

Erläuterung

?\\K`duck

Setzen Sie die Arbeitszeichenfolge auf duckund 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.

K`goose

Ersetzen Sie das duckmit goose, 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 ...:

\K`duck
?+\G`
K`goose
Martin Ender
quelle
5

Vim (Skript) unter Linux, 46 43 Bytes (4946 mit :am Zeilenanfang)

.!date +0\%N\%s6
s/6.*/goose
s/\d/duck\r/g

Ausgeführt als vim -S filenameoder eingefügt in Laufen vimmit :vor jeder Zeile.

Jiwopin
quelle
2
Willkommen bei PPCG! Sie sollten in der Lage sein, \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 :)
H.PWiz
Willkommen bei PPCG!
Steadybox
5

> <> , 31 22 Bytes

"duck"a>x
r"esoog"<>o<

Probieren Sie es online!

-9 Bytes basierend auf der Revision von Not a Tree

KSmarts
quelle
1
Sie könnten l?!;mit einem Fehler entfernen und beenden.
Emigna
1
Und Sie könnten noch mehr davon
Emigna
1
Oder so .
Kein Baum
3
@Notatree Ich bekomme das manchmal zu drucken "\ nkcud \ nkcud ...". Es verhält sich selten richtig
Suppen
1
@Suppen Nur ein Pfeil anstelle eines Spiegels behebt das Problem. siehe bearbeiten
KSmarts
5

Befunge 98 , 38 30 25 Bytes

"esooG"v>:#,_@
"Duck"a<?<

Probieren Sie es online!

  • Vielen Dank, @JoKing, dass du das nutzlose Trampolin ausgezogen hast
  • Wechseln Sie zu Befunge 98 für kürzere neue Zeile - Duckpasst jetzt in eine einzelne Zeichenfolge
Vincent
quelle
1
Sie brauchen das nicht #in der zweiten Zeile
Jo King
Und "technisch", whitespace within a line is fineso können Sie ein paar Anführungszeichen ausschneiden (auch wenn die Ausgabe seltsam aussieht)
Jo King
@JoKing Danke, siehe meine Bearbeitung.
Vincent
5

T-SQL , 70 44 43 Bytes (Viele Enten)

while rand()<.9print'duck'print'duck
goose'

Danke @Zac Faragher!

Überarbeitete Version, 54 43 40 Bytes (1 oder 2 Enten)

Vielen Dank @BradC!

if rand()<.5print'duck'print'duck
goose'


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

Wahrscheinlich
quelle
Nett. Down to 61 , wenn Sie ändern selectzu printund die endgültige ersetzen 'duck'select'goose'mit 'duck(linebreak)goose'(mit einem wörtlichen Zeilenumbruch, natürlich)
BradC
Eigentlich können Sie nur while rand()<.5print'duck'print'duck(linebreak)goose'für 43 tun .
BradC
Schön, danke @BradC. Gibt es eine andere Möglichkeit, einen Zeilenumbruch in einer Zeichenfolge darzustellen, als ein Zeichen (13) hinzuzufügen?
Wahrscheinlich
Ja, einfach buchstäblich eine Rückkehr in die Anführungszeichen setzen, ich bearbeite Ihren Beitrag, um Sie zu zeigen (Kommentare zeigen keine Rückkehr).
BradC
1
Sparen Sie 3 weitere Bytes: Ändern Sie die erste whilein if. Druckt (zufällig) entweder eine oder zwei Enten, was (glaube ich) die Herausforderung noch erfüllt.
BradC
5

Powershell - 31 30 Bytes

Warnung : Sie werden höchstwahrscheinlich mit einer Menge Enten enden. RandomUmfasst die Werte von 0 bis Int32.MaxValue. Je nachdem, wie zufällig Ihre Zahl ist, kann dies eine Menge Quacksalber sein.

1..(Random)|%{"Duck"};"Goose"
SomeShinyObject
quelle
Sie sollten müssen die nicht $vor (Random). Probieren Sie es online!
AdmBorkBork
@AdmBorkBork danke für den Fang!
SomeShinyObject
4

Befunge

57 35 Bytes (Umfang des gesamten Feldes ist 19x3 17x2 Zeichen) Vielen Dank an Karhell für die Verbesserung.

55+"kcud",,,,,#v?
  @,,,,,"goose"<

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.

rael_kid
quelle
Wenn eine 50% ige Chance auf Gans akzeptabel ist, 55+"kcud",,,,,#v?(linebreak here) @,,,,,"goose"< würden Sie Ihren Code auf 35 Bytes
reduzieren
Ah das süße Wrap-Around. Du hast recht, danke, ich poste später ein Update!
Rael_kid