Wprowadzenie
Piosenka z dzieciństwa Eeny, meeny, miny, moe była często używana do wybrania, kto był „tym” podczas odtwarzania tagu. Każdy stałby w kręgu i wskazywałby losowo wybraną osobę. Śpiewali:
Eeny, meeny, miny, moe,
Złap tygrysa za palec u nogi.
Jeśli krzyczy, pozwól mu odejść,
Eeny, meeny, miny, moe.
Kiedy śpiewali każde słowo, wskazywali na kolejną osobę w kręgu. Osoba, której wskazano, kiedy śpiewano końcowe „moe”, to „to”. Dzieci natychmiast wstały i rozproszyły się.
Cel
Zaimplementuj najkrótszy program w bajtach, który pobiera dane wejściowe, liczbę dzieci i podaje słowa, które zostały zaśpiewane podczas wskazywania.
Zwycięzca zostanie wybrany za tydzień.
Wejście
Od STDIN: pojedyncza, dodatnia liczba całkowita, liczba dzieci. Może to być więcej niż liczba słów w utworze.
Wynik
Zapisuje do STDOUT listę, w której każda linia reprezentuje dziecko i zawiera słowo śpiewane podczas wskazywania. Jeśli jest za dużo dzieci, puste linie mogą zostać pominięte.
Wymagania
- Zawsze zaczynaj od pierwszego dziecka.
- Wyświetlaj słowa bez interpunkcji.
- Ostatnie „moe” należy podkreślić jako „MOE!” w tym interpunkcja.
Przykład
Wejście
3
Wynik
Eeny moe tiger toe hollers go miny
meeny Catch by If let Eeny MOE!
miny a the he him meeny
Wejście
7
Wynik
Eeny by him
meeny the go
miny toe Eeny
moe If meeny
Catch he miny
a hollers MOE!
tiger let
Wejście
1
Wynik
Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!
Wejście
21
Wynik
Eeny
meeny
miny
moe
Catch
a
tiger
by
the
toe
If
he
hollers
let
him
go
Eeny
meeny
miny
MOE!
źródło
Odpowiedzi:
TeaScript , 82 bajty
Rozpakuj, porcjuj, transponuj, łącz, wyjdź.
Wyjaśnienie
Wypróbuj online
81 bajtów niekonkurujących
Nie
α
był związany,.
więc musiałem to naprawićźródło
Pyth,
1038984 znakówZaoszczędzono 18 bajtów dzięki kompresji ciągów dzięki @Dennis i @FryAmTheEggman
Zaoszczędzono kolejny bajt dzięki @isaacg
Ostrzeżenie: w kodzie jest wiele niedrukowalnych; użyj poniższych linków, aby spróbować.
Wypróbuj online | Zestaw testowy
Prawdopodobnie można grać w golfa. Sugestie mile widziane!
Jak to działa
źródło
Eeny meeny miny
jakiś sposób powinno zaoszczędzić kilka bajtów. Ponadto Pyth ma dwa wbudowane moduły (de) kompresji (.Z
i."
).."
oszczędza 14 bajtów!FNQ
NawiasemVQ
mówiąc, ==Galaretka, 84 bajty
Wypróbuj online!
źródło
JavaScript (ES6), 167 bajtów
Wyjaśnienie
źródło
l=Array(n).fill``
jakiegoś powodu nie działa?Haskell,
160157 bajtówPrzygotuj
"Eeny meeny miny "
do pozostałych części ("moe Catch ..."
i"MOE!"
), połącz oba łańcuchy, podziel na słowa, weź kawałki o wymaganym rozmiarze, transponuj i ponownie połącz w jeden łańcuch.@Mauris znalazł 3 bajty, wyodrębniając typowy podciąg „Eeny meeny miny” i czyniąc go
f
bezcelowym.źródło
s="Eeny meeny miny "
oszczędza trochę bajtów.f=unlines.map unwords.transpose.(`chunksOf`(["moe Catch a tiger by the toe If he hollers let him go","MOE!"]>>=words.("Eeny meeny miny "++)))
f
jest to całkowicie bezcelowe, możemy pominąć nawet nazwę.Python 2,
154147 bajtówEDYCJA: Dzięki Joe Willis!
Wykorzystuje sztuczkę polegającą na tym, że [0 :: n] drukuje n-ty element listy.
Wypróbuj tutaj
źródło
::
operator? Czy to jest jak w pętli?Rubin, 160 bajtów
Wszystkie moje próby „kompresji” łańcucha spowodowały, że był on dłuższy.
Wciąż próbuje...źródło
JavaScript (ES6), 189 bajtów:
Wyjaśnienie:
źródło
I=>(b=Array(I--).fill``,c=0,"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!".split` `.forEach(v=>(b[c]+=v+' ',c+=c>I-1?-c:1)),b)
długości 172 bajtów. Zwraca każdą linię jako element tablicy. Myślę, że to jest dopuszczalne..map()
zamiast.forEach()
, możesz zapisać 3 bajty, zmniejszając do 169 bajtów. Przy odrobinie zabawy, może to być tweetowanie!STDIN
iSTDOUT
tak myślę, że ogranicza się do odpowiedzi JavaScriptprompt
ialert
niestety.alert(b.join`<newline>`)
na końcu. Ale obrażenia można nadal zmniejszyć.map()
, zamiast.forEach()
.Python 3,
279278272173 bajtów(dzięki Mathias Ettinger, który dosłownie uratował mnie ponad 100 BYTES! )
Jeśli ktoś ma jakieś wskazówki lub sugestie, bardzo je doceniam. Dzięki!
źródło
int(i)
powinien zająć miejsce3
, ale po tym są inne błędy do naprawienia.%
. Jest idealny do liczników cyklicznych..split()
podzieli się na spacje (spacja, nowe linie, tabulatory) 2)range(0, x)
najlepiej napisać jakorange(x)
3) spójrz na notację plastra:w[0::3]
zwróci listę co trzy słowa ww
.Mathematica, 154 bajty
Używa metody split-chunk-transpose-join-output z większości innych odpowiedzi.
źródło
MATLAB, 167 bajtów / znaków:
Wyjaśnienie:
Nie będzie wygrywać żadnych nagród na ten czas, ale było fajnie. :-)
źródło
Japt,
908786 bajtówWiele materiałów do drukowania. Wypróbuj online!
Jak to działa
Próbowałem skompresować ciąg przy użyciu różnych ograniczników. Jedyną rzeczą bardziej wydajną niż spacje byłaby mała litera, ale większość z nich jest już używana, a zatem nie można jej użyć do podziału łańcucha. Oto, ile kompresji osiąga się z pozostałymi:
Obecnie używam
d
. Możliwe, że można zapisać bajts
, zastępując inną literę whollers
.źródło