Kaczka kaczka gęś!

58

Pamiętasz grę dla dzieci „Kaczka, Kaczka, Gęś” ? Nie? Ja też nie.

Wyzwanie

  • Drukuj słowo „kaczka” na poszczególnych liniach w nieokreślonej liczbie razy.
  • Wydrukuj słowo „gęś”.
  • Twój program się kończy.

Zasady

  • Spróbuj zagrać w jak najmniej bajtów.
  • Musi być co najmniej jedna kaczka.
  • Na końcu listy musi znajdować się dokładnie jedna gęś.
  • W każdej linii musi znajdować się dokładnie jeden ptak. Brak pustych linii.
  • Przypadek wyprowadzanych ciągów jest nieistotny.
  • Białe znaki w linii są w porządku.
  • Twój program musi się zakończyć.
  • Twój program nie może konsekwentnie wytwarzać tej samej liczby kaczek.

Baw się dobrze!


Uwaga: To pytanie nie jest duplikatem najkrótszego kodu w celu uzyskania niedeterministycznych danych wyjściowych

Powody obejmują:

  • Związek z grą dla dzieci
  • Zdefiniowane wymagania początkowe i końcowe ciągu wynikowego. W innym wyzwaniu nie ma określonego wyniku.
  • Odpowiedzi W przypadku drugiego niedopowielonego wyzwania jest to jednocyfrowa liczba bajtów. Średnia dla tego wynosi około 30 lub mniej więcej.
  • Ze względu na stopień pokrywania się tego wyzwania z tym, każde pytanie w golfa kodu, w tym tag „losowy”, jest duplikatem. Czy powinniśmy je wszystkie usunąć?
  • Odpowiedzi kodu dla tego wyzwania byłyby zgodne z innym wyzwaniem (w absurdalnie rozdęty sposób), ale odpowiedzi na to wyzwanie nie pasowałyby do tego.
AJFaraday
źródło
11
Czy możesz zdefiniować nieokreślony? Czy to może oznaczać zero lub jeden?
rekurencyjny
1
Proszę określić, jak losowo ma być generowany. Jednolity zasięg czy spadek wykładniczy?
HyperNeutrino,
@recursive Nie, ale przejdźmy do działającej definicji ... Program nie konsekwentnie prezentuje taką samą liczbę kaczek.
AJFaraday
2
Mówiąc jak Minnesotan, co jeśli moje zamiast tego wydrukuje „kaczka, kaczka, szara kaczka” ? :)
Mike Hill
1
@ jpmc26 Jestem pewien, że są jeszcze inni. Na początek musiałbyś grać z innymi.
AJFaraday

Odpowiedzi:

9

Galaretka , 13 bajtów

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

Wypróbuj online!

Wyjaśnienie:

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

Bardziej czytelna wersja: Wypróbuj online!

Zawsze zwróci 1 lub 2 kaczki.

użytkownik202729
źródło
Gratulacje! Nie mam dosłownie pojęcia, jak to działa!
AJFaraday,
@AJFaraday poszedłem naprzód i dodałem wyjaśnienie dla ciebie
PunPun1000
@ PunPun1000 Przepraszamy, ale co to za stos? Galaretka to milczący język programowania.
user202729,
@ user202729 Ups, mam w głowie pomyłkę z Jelly i 05AB1E. Czy możesz ją edytować, aby naprawić ten błąd? Przepraszam za to
PunPun1000,
W galarecie jest ukryta konkatenacja? Tak!
MilkyWay90
43

Operacyjny język skryptowy Flashpoint , 48 bajtów

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

Zawsze drukuje jedną lub dwie kaczki.

random 1zwraca liczbę (zmiennoprzecinkową) z zakresu od 0 do 1. Liczba ta jest przekazywana jako argument selectwraz z tablicą [s,""]. Liczba losowa jest następnie zaokrąglana do najbliższej liczby całkowitej (0 lub 1), a element tablicy o tym indeksie jest wybierany z tablicy.

Zadzwoń z:

hint call f

Wynik:

Alternatywna wersja 56 bajtów:

f={s="duck\n";format[s+"%1goose",[s,""]select random 1]}
Steadybox
źródło
3
Zawsze cieszę się, gdy ktoś używa tego na PCG.
Nit
Zapomniałem, że ta gra istnieje.
Caimen
38

World of Warcraft 81 bajtów

Oto makro, które możesz uruchomić w World of Warcraft.

/run for x=1,random(1,9) do SendChatMessage("Duck") end; SendChatMessage("Goose")
Kelly Lowder
źródło
11
O mój panie ... Dlaczego nigdy o tym nie myślałem.
Magic Octopus Urn
4
PVCG (Programowanie gier wideo i Code Golf). Operacja Flashpoint była rzeczą, ale WoW? Czekam na rozwiązania Minecraft i Factorio.
Brain Guider
2
@AnderBiguri Podejrzewam, że Minecraft zrobiłby trochę gorszy niż 81 bajtów (bloków?);)
Chris
5
To powinno zadziałać i doprowadzić Cię do 58 bajtów:/run for x=1,random(1,9)do print("Duck")end print("Goose")
gastropner
35

Minecraft <1,13, 72 54 bajtów

Przepraszam, musiałem.

Instrukcje:

  • Utwórz nowy świat Minecraft w trybie kreatywnym
  • Znajdź folder zapisu dla tego świata i umieść w nim następujący kod data/functions/minecraft/ddg.mcfunction
  • Uruchom /function ddgw konsoli do gier

Jak to działa:

Zwraca słowo „kaczka” dla każdego bytu na świecie, a następnie słowo „gęś”. Ponieważ istoty stale się odradzają i znikają, liczba „kaczek” nie będzie stała. Użyłem tellrawzamiast znacznie krótszego, sayponieważ saywypisuje nazwę bytu, a tellrawwypisuje dokładnie to, co mu powiedziano.

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

Zrzut ekranu

wprowadź opis zdjęcia tutaj

Edycja: Zmieniono {„text”: „duck”} na po prostu „duck” (i to samo z „gęsią”)

FlyingPiMonster
źródło
1
Piękny. Potrzebujemy więcej Minecraft w PPCG.
BradC
9
Warto wspomnieć, że ty (gracz) jesteś istotą na świecie, więc liczba kaczek nigdy nie może wynosić 0 (nawet jeśli nie byłoby wrogich lub pasywnych mobów).
BradC
1
@BradC powinny istnieć całe wyzwania oparte na Minecraft.
tox123
17

JavaScript, 45 44 42 39 37 bajtów

Może powodować błąd przepełnienia.

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

Sprawdź to

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

Kudłaty
źródło
14

Oktawa , 38 33 bajtów

To nie jest najkrótszy (36 bajtów), ale jest moim ulubionym. Wyjaśnienie znajduje się na dole.

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

Wypróbuj online!


Kilka krótszych odmian:

Działa to w zasadzie (33 bajty), ale limit czasu dla tłumaczy internetowych:

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

Dodanie niektórych bajtów w celu skrócenia wyjścia powoduje, że ma on 35 lub 36 bajtów:

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

Wyjaśnienie:

Wyjaśnię tylko ostatnią przypadkową. Pozostałe są podobne, ale wykorzystują liczbę dni od 1 stycznia 0000 do dziś.

randzwraca losową liczbę z przedziału (0, 1) . W ten sposób 1/randzwraca liczbę większą niż 1 . Ponieważ zakres 1:f, gdzie flosowa liczba zmienna większa niż 1 jest identyczna 1:floor(f), 1:1/randtworzy zakres 1 .. x , gdzie x> = 1 .

Spróbuję wyjaśnić to tak, jakby Octave był językiem stosowym.

      '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
źródło
disp(['duck '+~pwd';'goose'])? Nie jestem pewien, czy jest to wystarczająco „nieokreślone”
Luis Mendo,
12

Perl 5 , 20 bajtów

Najpierw praktyczne 26 bajtów:

Kaczki 1 do 9 razy przed gęsią skórką.

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

Wypróbuj online!

Ale jeśli masz dużo pamięci i czasu, ta 20-bajtowa wersja (jak sugeruje Chris ) również działa:

say"Duck
"x$^T,Goose

Zakłada to również, że problem roku 2038 zostanie rozwiązany dla Perla 5 , w przeciwnym razie będzie nieważny przez 1 sekundę 20 lat.

Ton Hospel
źródło
Jeśli zmienisz 1+$^T%9na just $^T, nadal działa i oszczędzasz 4 bajty.
Chris
@chris Oczywiście masz więcej pamięci niż ja. Mimo to przyjmuję twoją sugestię, ponieważ istnieją rozsądne komputery, na których będzie działać. Dzięki.
Ton Hospel
12

Python 2 , 36 34 bajtów

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

Wypróbuj online!

Sugestia Kevina Cruijssena prowadzi do 34 bajtów:

print"duck\n"*-~(id(id)%5),"goose"
Greg Fuller
źródło
3
Witamy na stronie i fajna pierwsza odpowiedź!
caird coinheringaahing
Witamy w PPCG! Możesz zagrać w dwa bajty, zmieniając ((id(id)%5)+1)na, -~(id(id)%5)aby pozbyć się nawiasu. Wskazówki do gry w golfa w <wszystkich językach> i Wskazówki do gry w golfa w Pythonie mogą być interesujące do przeczytania. Miłego pobytu!
Kevin Cruijssen
1
Nie id(id)może być, id(0)czy coś mi brakuje?
Jonathan Frech
@Johnathan, patrząc id(0)na kilka różnych komputerów, sugeruje, że jest to stałe.
user2699
1
Nieco bardziej intuicyjne i nie byłoby więcej bajtów do wywołania id([]). Powinno to inicjować odrębną listę przy każdym uruchomieniu programu, co teoretycznie powinno konsekwentnie dawać różne adresy pamięci.
jpmc26
11

Z Shell (+ wget i Netpbm), 168 160 150 148 145 135 120 bajtów

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

Nie jest to najkrótsze rozwiązanie, ale miałem ochotę nadać temu wyzwaniu trochę innego rodzaju (zainspirowane rozwiązaniem @ AlexG innego problemu ).

Ten skrypt generuje obraz PPM zawierający od 1 do 8 zdjęć kaczek i zdjęcie gęsi u dołu na standardowym wyjściu. Pobiera dwa zdjęcia źródłowe z Wikipedii, więc dostęp do Internetu jest niezbędny do działania.

Przykładowe dane wyjściowe przekonwertowane na JPEG przez pnmtojpeg :

wprowadź opis zdjęcia tutaj

Lucucas
źródło
1
To całkowicie sprawiło, że mój dzień!
AJFaraday
Właśnie zdałem sobie sprawę, że jesteś tą samą osobą, która zaproponowała inne wyzwanie, z którym się związałem. xD Cieszę się, że ci się podobało! = D
Łukasz
Tak, jest kilka tematów w moich wyzwaniach golfa kodu :) Zdecydowanie powinienem dać punkty bonusowe za obrazkowe odpowiedzi.
AJFaraday
Czy to nie jest standardowa luka w pozyskiwaniu zasobów zewnętrznych?
MilkyWay90
10

R , 35 bajtów

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

Wypróbuj online!

rexp()tworzy losową liczbę z wykładniczej funkcji rozpadu. +1aby zapewnić co najmniej jedną kaczkę. Wszystkie wiersze po pierwszej zawierają spację wiodącą (która jest domyślnym separatorem dla cat), ale jest to dozwolone.

użytkownik2390246
źródło
1
Prawdopodobieństwo wyprodukowania więcej niż jednej kaczki wynosi exp(-1)około 36,8%.
Giuseppe,
Prosi o wydrukowanie go w każdej linii. Myślę, że powinieneś dodać „\ n” do swojej „kaczki”
stuart stevenson
3
@stuartstevenson Tutaj użyłem dosłownie nowego wiersza, \nponieważ jest on o jeden bajt krótszy. Jeśli odwiedzisz „Wypróbuj online!” link widać, że efekt jest taki sam.
user2390246
W polu DOS / Windows ta nowa linia nadal będzie miała dwa (2) bajty. 0x0d0a
zapalono
10

Bash , 39 38 37 bajtów

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

Wypróbuj online!

Drukuje liczbę kaczek równą liczbie cyfr w liczbie całkowitej równomiernie rozłożonej na [0,32767] (czyli częściej pięć kaczek (duża liczba kaczek)).

-1 bajt każdy dzięki @Chris i @sch wskazując pary cytatów, które nie pociągały za sobą.

Sophia Lechner
źródło
1
Witamy w PPCG!
Steadybox
1
Możesz zaoszczędzić jeden bajt, pozbywając się pojedynczych cudzysłowów, o ile zamieniasz \nje na \\n.
Chris
1
Dobry pomysł. Możesz zrobić coś podobnego za pomocą zwykłych konstrukcji bash i bez sed przez 30 bajtów.
Cyfrowa trauma
1
sed s/[0-9]/duck\\n/g<<<$RANDOM\goosemoże ogolić jeden bajt
sch
1
To sednie jest całkowicie przenośne. Na niektórych platformach możesz uciec z jednym ukośnikiem odwrotnym \n. W innych nie otrzymasz nowej linii bez względu na to, co robisz.
tripleee
9

Pure Bash (bez narzędzi zewnętrznych), 25

Na podstawie odpowiedzi @ SophiaLechner drukuje również dużą liczbę kaczek .

@ Pomysł OlivieraDulaca na użycie PID powłoki skryptu zapisanej w $parametrze pozwala zaoszczędzić 5 bajtów.

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

Wypróbuj online .

Cyfrowa trauma
źródło
1
jeśli założymy, że uruchomisz program, za każdym razem otrzyma on inny pid. często będzie to 5 cyfr, ale nie zawsze. stąd: zmień RANDOMna $golenie 5 bajtów? I można też zrobić bardzo długi ciąg kaczek:yes duck|head -n $$;echo goose
Olivier Dulac
@OlivierDulac tak, myślę, że używanie $$jest dopuszczalne - dzięki!
Cyfrowa trauma
Zapraszamy! yes duck | head -n $$;echo gooseAlternatywnie opublikowałem moją inną wersję ( ) (dłuższą niż twoja, ale dostaniesz DUŻO kaczek za 5 dodatkowych znaków ^^)
Olivier Dulac
8

Rubinowy , 30 bajtów

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

Wypróbuj online!

Uwaga: naprawdę 31 bajtów bez \noszukiwania.

Turophile
źródło
Szczerze mówiąc, nie jestem pewien, czy to oszustwo.
AJFaraday
8

Bash + Coreutils, 36 27 bajtów

yes duck|sed $$q;echo goose

Drukuje zbyt wiele kaczek (między 2 a cat /proc/sys/kernel/pid_max), a następnie jedną gęś.

Zaoszczędzono dziewięć bajtów dzięki Digital Trauma i Olivier Dulac.

Wypróbuj online! (ale pamiętaj, że czasami może zostać obcięty)

Ta sama długość, ale bez echo:

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

Wypróbuj online!

ato komenda append w sedi qkończy działanie. Oba działają tylko na linii $$, która odpowiada PID.

Chris
źródło
Bash ma modulo, ale to zwiększy rozmiar. Spróbujhead -n $((1+(RANDOM % 5)))
tripleee 13.03.18
@tripleee Ponieważ jest to golfowy kod, zwiększenie wielkości wyniku jest lepsze niż zwiększenie tego rozmiaru kodu. A 132767 kaczek jest wręcz rozsądne w porównaniu do miliarda lub więcej, które można zobaczyć gdzie indziej;)
Chris
1
Jasne, tylko mając nadzieję, że okażę się pomocna na wypadek, gdyby ktoś naprawdę chciał zastosować te przełomowe badania w praktyce pewnego dnia. Na przykład TIO . 44 bajty z usuniętymi spacjami.
tripleee
@OlivierDulac zasugerował użycie $$zamiast $RANDOMna moją odpowiedź . Myślę, że możesz użyć tego samego, aby zaoszczędzić 5 bajtów. Aha i spróbuj sedteż:yes duck|sed 1$$q;echo goose
Cyfrowy uraz
W rzeczywistości yes duck|sed $$q;echo goosejest w porządku - nie sądzę, aby twój skrypt kiedykolwiek dostał PID <1.
Digital Trauma
7

PowerShell , 35 30 28 bajtów

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

Wypróbuj online! (zmodyfikowana wersja)

Generuje tablicę Get-Randomliczby elementów. To może chwilę potrwać. Dodaje to, +1aby upewnić się, że otrzymamy co najmniej jeden duck. Zmodyfikowana wersja zawiera również -maflagę ximum, 5dzięki czemu można zobaczyć, że program działa zgodnie z oczekiwaniami (zmodyfikowana wersja wydrukuje 1, 2, 3 lub 4 ducks przed goose).

Tablica i samotny gooseciąg są pozostawione w potoku, a domniemane Write-Outputdaje nam wartości rozdzielone znakiem nowej linii za darmo.

Nie wiesz, jak trudno mi było nie zmienić ostatniej linii na „szara kaczka” ...

AdmBorkBork
źródło
Ten wariant brzmi całkiem fajnie i na pewno warto
sprawdzić
1
@AdmBorkBork, ten Minnesotan dołączył do tej grupy, by dać +1 Twojej szarej kaczce.
Milwrdfan,
0..(random)|%{'duck'};'goose'wygląda jak 29, a także wygeneruje gdzieś do [int] :: MaxValue (2,1 miliarda) kaczek przed gęsią. (I 0..0drukuje kaczkę)
TessellatingHeckler
@TessellatingHeckler Dzięki, ale właśnie wymyśliłem wersję 28-bajtową. :)
AdmBorkBork
6

Python 2 , 54 bajty

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

Wypróbuj online!

Quintec
źródło
@JonathanAllan dzięki :)
Quintec
6

Brachylog , 24 21 bajtów

-3 bajty dzięki Erikowi Outgolferowi

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

Wypróbuj online!

Z okazji Języka miesiąca , mój pierwszy post brachylog. Kontrola w tym języku jest fajna.

Jak to działa:

"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
źródło
Więc jeśli czytam to w prawo, to czyta od lewej do prawej, od dołu do góry?
AJFaraday
2
Język próbuje znaleźć logiczną prawdę, używając tylko pierwszego wiersza programu. Mój program mówi „Sprawdź poprawność drugiego wiersza, a następnie wydrukuj gęś”. Następnie w drugim wierszu jest napisane „wydrukuj kaczkę, a następnie sprawdź, czy losowa liczba od 0 do 4 to 0, lub zweryfikuj ponownie ten wiersz”, więc technicznie od lewej do prawej tylko górna linia, a następnie wszelkie predykaty, które stamtąd
wywołujesz
Fajnie, ciekawe jest dowiedzieć się, jak działają nowe języki. Dotarło do mojej skrzynki odbiorczej, ale nie jestem pewien, czy to dlatego, że zadałem pytanie, czy dlatego, że już tutaj skomentowałem.
AJFaraday
Możesz połączyć dwa predykaty w ten sposób i powiązać mnie.
Erik the Outgolfer
6

Geometry Dash World 2.2 Editor - 4 obiekty

Obraz poziomu kreski geometrii

Wyjaśnienie:

Wyzwalacz BG jest losowym wyzwalaczem obecnego 2.2, więc albo przełącza identyfikator grupy 1 lub 2.

Pierwszy „KACZKA” ma identyfikator grupy wynoszący 1, co sprawia, że ​​ma 50% szans na usunięcie lub nie (przełączenie).

Na tym poziomie nie ma obiektu o identyfikatorze grupy 2, więc istnieje 50% szans na wyświetlenie 2 „KACZEK”.

Jak to odtworzyć:

Pierwszy „KACZKA” ma identyfikator grupy 1.

wprowadź opis zdjęcia tutaj

Gęś i druga kaczka nie mają identyfikatora grupy wprowadź opis zdjęcia tutaj

Wewnątrz losowego wyzwalacza. wprowadź opis zdjęcia tutaj

MilkyWay90
źródło
Wyczuwam motyw tego wyzwania
Benjamin Urquhart,
@BenjaminUrquhart Co?
MilkyWay90
Istnieją zgłoszenia do Word of Warcraft, Minecraft i niektórych innych gier.
Benjamin Urquhart
2
@BenjaminUrquhart Lepiej znajdź więcej gier do odpowiedzi
MilkyWay90
5

05AB1E , 15 14 bajtów

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

Wypróbuj online!

Wydrukuje 2, 5 lub 6 kaczek, a następnie gęś.

-1 bajt dzięki @Emigna używającej 'dla pojedynczego skompresowanego słowa (kaczka)

Kaldo
źródło
1
Możesz używać, 'Ðœponieważ kaczka jest pojedynczym słowem.
Emigna,
1
Beats mine:['ÐœTΩ#].•zíΘ•»
Magic Octopus Urn
@MagicOctopusUrn Naprawdę podoba mi się twoje podejście do nieskończonej pętli. Twoja odpowiedź jest zdecydowanie bardziej zgodna z duchem wyzwania (lub czym powinna być?), Ponieważ może wyprodukować nieskończoną ilość kaczek.
Kaldo
@Kaldo wciąż 15 bajtów przegrywa z twoim;)
Magic Octopus Urn
1
Alternatywny 14-bajtowy:'Ðœ₁Ω.D.•zíΘ•»
Magiczna ośmiornica Urn
5

APL (Dyalog) , 22 bajty

1 bajt zapisany dzięki @EriktheOutgolfer

'Goose'⍪⍨(?9)5'Duck '

Wypróbuj online!

Uriel
źródło
Alternatywa:'Goose'⊣⎕←⍣(?9)⊢'Duck'
Erik the Outgolfer
5

Siatkówka , 17 bajtów

?\\K`duck
K`goose

Wypróbuj online!

Wypróbuj online!

Drukuje 1 lub 2 kaczki, z jednakowym prawdopodobieństwem.

Wyjaśnienie

?\\K`duck

Ustaw ciąg roboczy ducki wydrukuj go za pomocą końcowego wiersza linefeed ( \). Następnie jest to pakowane w inny stopień wyjściowy, ale ten ma na sobie losową flagę ( ?), więc drukuje tylko z prawdopodobieństwem 50%.

K`goose

Wymień ducksię goose, który jest drukowany domyślnie na końcu programu.

Oto zabawna alternatywa, która drukuje 1 kaczkę z 50% prawdopodobieństwem, 2 kaczki z 25%, 3 kaczki z 12,5% ...:

\K`duck
?+\G`
K`goose
Martin Ender
źródło
5

Vim (skrypt) w systemie Linux, 46 43 bajty (4946 z :na początku linii)

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

Wykonany jako vim -S filenamelub wklejone do prowadzenia vimz :przed każdym wierszu.

jiwopene
źródło
2
Witamy w PPCG! Powinieneś być w stanie użyć \dponad [0-9]. Wygląda też na to, że vim nie wymaga końca nowej linii, więc może to być 45 bajtów :)
H.PWiz
Witamy w PPCG!
Steadybox
5

> <> , 31 22 bajtów

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

Wypróbuj online!

-9 bajtów na podstawie wersji innej niż drzewo

KSmarts
źródło
1
Możesz usunąć l?!;i wyjść z błędem.
Emigna
1
I możesz zaoszczędzić trochę więcej w ten sposób
Emigna
1
Albo jak ten .
Nie drzewo,
3
@Notatree Otrzymuję ten, który czasami drukuje „\ nkcud \ nkcud ...”. Rzadko zachowuje się poprawnie
Suppen
1
@Suppen Tylko użycie strzałki zamiast lustra naprawia ją; patrz edycja.
KSmarts
5

Befunge 98 , 38 30 25 bajtów

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

Wypróbuj online!

  • Dzięki @JoKing za zdjęcie bezużytecznej trampoliny
  • Zmiana na Befunge 98 na krótszą nową linię - teraz Duckmieści się w jednym ciągu
Vincent
źródło
1
Nie potrzebujesz #drugiej linii
Jo King
I „technicznie”, whitespace within a line is finewięc możesz wyciąć kilka cytatów (nawet jeśli wyniki wyglądają dziwnie)
Jo King
@JoKing Dzięki, zobacz moją edycję.
Vincent
5

T-SQL , 70 44 43 bajty (wiele kaczek)

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

Dzięki @Zac Faragher!

Wersja poprawiona, 54 43 40 bajtów (1 lub 2 kaczki)

Dzięki @BradC!

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


Nie wydaje mi się, aby działał poprawnie w SQL Fiddle , ale działa dobrze w LINQPad i SSMS.

Nie jestem pewien, czy jest to znane ograniczenie SQL Fiddle, czy po prostu robię coś złego

Prawdopodobnie
źródło
Miły. W dół do 61, jeśli zmieni selectsię printi wymienić końcowy 'duck'select'goose'z 'duck(linebreak)goose'(z dosłownym LINEBREAK, oczywiście)
BradC
Właściwie możesz zrobić tylko while rand()<.5print'duck'print'duck(linebreak)goose'za 43.
BradC
Fajnie, dzięki @BradC. Czy istnieje inny sposób reprezentowania podziału linii w ciągu innym niż dodanie znaku char (13)?
Prawdopodobnie
Tak, po prostu dosłownie wstaw zwrot w cudzysłowie, zredaguję twój post, aby ci pokazać (komentarze nie pokazują zwrotów).
BradC
1
Zapisz jeszcze 3 bajty: zmień pierwszy whilena if. Drukuje (losowo) jedną lub dwie kaczki, które (jak sądzę) nadal spełniają wyzwanie.
BradC
5

PowerShell - 31 30 bajtów

Ostrzeżenie : najprawdopodobniej skończysz z dużą ilością kaczek. Randomzawiera wartości 0, Int32.MaxValuewięc w zależności od tego, jak losowa jest twoja liczba, może to być kwakanie.

1..(Random)|%{"Duck"};"Goose"
SomeShinyObject
źródło
Nie powinieneś potrzebować $przodu (Random). Wypróbuj online!
AdmBorkBork
@AdmBorkBork dzięki za połów!
SomeShinyObject
4

Befunge

57 35 bajtów (obwód całego pola to 19x3 17x2 charachters) Dzięki karhell za ulepszenie.

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

Druga linia umieszcza kaczkę i nową linię na stosie (do tyłu) i wyprowadza ją jako ciąg. Po tym 75% szansy na powrót do początku i wydrukowanie kaczki ponownie, 25% (gdy znak zapytania decyduje się zejść), aby wydrukować gęś i zatrzymać.

rael_kid
źródło
Jeśli 50% szansa na gęś jest akceptowalna, 55+"kcud",,,,,#v?(linebreak here) @,,,,,"goose"< zmniejszyłby twój kod do 35 bajtów
karhell
Ach, słodko. Masz rację, dzięki, opublikuję aktualizację później!
rael_kid