Wejście:
Dane wejściowe to losowa tablica orzechów (w twoim języku), możliwe orzechy poniżej. Twój program musi mieć sposób reprezentowania każdego rodzaju nakrętki, na przykład kodu liczby całkowitej. Program musi być w stanie obsłużyć dowolną tablicę rozmiarów dowolnej konfiguracji nakrętek.
Możliwe orzechy:
Kola nut
Macadamia
Mamoncillo
Maya nut
Mongongo
Oak acorns
Ogbono nut
Paradise nut
Pili nut
Pistachio
Walnut
Wynik:
Wyjściem musi być tablica posortowana w taki sposób, aby nie było sąsiadujących nakrętek tego samego rodzaju. Jeśli jest to niemożliwe, wyjściem powinna być pusta tablica.
Przykładowe dane wejściowe (uproszczone):
["walnut", "walnut", "pistachio"]
Przykładowe dane wyjściowe:
["walnut", "pistachio", "walnut"]
Rozwiązania nie mogą po prostu przetasować tablicy, dopóki nie stanie się ona przypadkowa. Zastosowany rodzaj musi być deterministyczny
perl6 -e 'my @a="aaaaabbbbccccdddee".comb;my @b = @a.pick(*) while @b.squish !== @a;say [~] @b'
baedcbdacdecbabaca
(3,3,2) może również powodować ich awarię.Odpowiedzi:
GolfScript,
42413738 znakówKod oczekuje danych wejściowych STDIN i wypisuje wyniki do STDOUT, np .:
Skrypt stał się dłuższy niż oczekiwano, ale przypuszczam, że jest miejsce na ulepszenia.
Edycja: Przypadek listy z jednym przedmiotem kosztuje mnie 1 znak (najlepsze porównanie, jakie mogłem wymyślić, jest takie samo jak Peter).
źródło
$.,)2//zip
dokładnie to miałem na myśli. Moja interpretacja specyfikacji była taka, że może on pobierać dane wejściowe ze stosu i pozostawić je na stosie, więc może powinniśmy naciskać na wyjaśnienia.["walnut"]
w sekcji porównania pierwszych dwóch.GolfScript, 32 znaki
Taki sam format wejściowy i wyjściowy jak rozwiązanie Howarda.
źródło
Brachylog v2, 10 bajtów
Wypróbuj online!
Rozwiązanie siłowe. (Jest to funkcja dozwolona, ponieważ wyzwanie nie mówi „pełny program”.) Jest to również głównie bezpośrednie tłumaczenie specyfikacji (jedyną prawdziwą subtelnością jest to, że udało mi się tak ułożyć rzeczy, aby wszystkie ukryte ograniczenia dotarły dokładnie do odpowiednie miejsca, a tym samym nie potrzeba żadnych dodatkowych znaków, aby je ujednoznacznić).
Zauważ, że jest to ogólny algorytm służący do przestawiania dowolnego rodzaju listy, tak aby nie zawierał dwóch dotykających elementów; może obsługiwać reprezentacje łańcuchowe elementów, a także może również obsługiwać kody całkowite. Tak więc nie ma znaczenia, w jaki sposób „Twój program musi mieć sposób reprezentowania każdego rodzaju nakrętki, na przykład kodu liczby całkowitej”. wymóg z pytania jest interpretowany.
Wyjaśnienie
źródło
J, 80 znaków
Tak naprawdę nie w tej samej lidze, co Golfscript. Podejrzewam, że są pewne korzyści, ale 14 znaków potrzebnych tylko do wpisania listy do programu
[;.1' ',1!:1[1
jest dużym utrudnieniem.Zasadniczo program pobiera listę, grupuje podobne elementy razem, sortuje według liczby elementów w każdej grupie malejącej i naprzemiennie wyświetla wyniki między pierwszą i drugą połową listy. Reszta, jeśli kod pozbywa się obcych elementów i decyduje, czy lista jest poprawnym wyjściem (wypisuje nieskończoność,
_
jeśli nie jest).Przykład:
grupa
(</.])
:sortuj
(\:#&.>)
:ravel
((],.|.)~>.@-:@#)
:źródło
Galaretka , 14 bajtów
Wypróbuj online!
Ostatnie 6 bajtów można usunąć, jeśli możemy mieć niezdefiniowane zachowanie dla nieprawidłowych danych wejściowych.
źródło
Stax , 10 bajtów
Uruchom i debuguj
Oto ten sam program rozpakowany, nieposortowany i skomentowany.
Uruchom ten
źródło