Wygeneruj siatkę 4x12 liter / spacji:
Każda kość powinna pojawić się dokładnie raz, losowo wybrana lokalizacja. Lokalizacje powinny być zbliżone do jednolitej przypadkowej permutacji kości. Wyświetl losową (ponownie, w przybliżeniu jednolitą) twarz każdej kości. Wyjustuj lewą twarz w oknie 3-znakowym. Na przykład,
A E A A
E C D E
D A Qu E
E A H D
Jest to nierandomizowana tablica w formacie, który chcę. Końcowe miejsce jest dozwolone.
Kostka do gry:
A A E E G N
E L R T T Y
A O O T T W
A B B J O O
E H R T V W
C I M O T U
D I S T T Y
E I O S S T
D E L R V Y
A C H O P S
H I M N Qu U
E E I N S U
E E G H N W
A F F K P S
H L N N R Z
D E I L R X
Zabawny fakt: w zestawie jest tylko 1 K. Jaki inny list dotyczy wyłącznie tych, którzy umierają?
To jest golf golfowy, więc wygrywa program z najkrótszą liczbą bajtów!
Odpowiedzi:
GolfScript, 116 bajtów
Ponieważ ocenianie jest w bajtach, myślę, że oznacza to, że możemy użyć wszystkich bajtów w rozwiązaniu. Wyjście poza zestaw ASCII do wydruku pozwala na nieco krótsze rozwiązanie niż w przypadku Petera Taylora , kosztem utrudnienia wyświetlenia kodu tutaj. Bez danych niedrukowalnych mój kod wygląda następująco:
Jest dość podobny do rozwiązania Petera Taylora i przyznam się do bezwstydnego pożyczania jego fragmentów (takich jak
.81=' u '2/=
sztuczka), chociaż myślę, że udało mi się nieco skrócić jego losowanie, nawet po spędzeniu dodatkowego bajtuchardla większej przypadkowości.Ciąg binarny na początku skryptu zawiera znaki niedrukowalne, więc nie można go tutaj wkleić bezpośrednio. Zamiast tego dostarczę skrypt jako zrzut heksowy:
W systemie Linux lub dowolnym systemie z
xxd
zainstalowanym narzędziem ten zrzut szesnastkowy można przekształcić z powrotem w działający 116-bajtowy program GolfScript, przepuszczając goxxd -r
.Edit: Zastępuje
999rand
się9.?rand
za dużo lepszej losowości. Losowanie powinno być teraz tak blisko ideału, jak pozwala na to podstawowa RNG.źródło
Python 2.7,
253 229215 znakówWiększość postaci to same kości. Nie chciałem spędzać zbyt wiele czasu, próbując to zbyt mocno zmniejszyć
drobna edycja: usunięto 2 niepotrzebne bajty (dodatkowe spacje)
edit2: do 229
edycja3: do 215
źródło
print a+' u'[a=='Q']
orazprint'\n'[j%4:]
from random import*
i usuń wszystkor.
. 2) Zmień separatory w ciągu na `` (spacja) i skorzystaj zstr.split
domyślnego argumentu. 3) Pozbądź się wszystkiego, co ma związek zj
użytkowaniem'\n'[len(d)%4:]
. 4) Użyjlist.pop
domyślnego argumentu. 5) ... 6) Zysk!j=0...+'\n'[j%4:]
, aby zadziałałoGolfScript (
141 139137znakówbajtów)Z czego 94 rozwija się do ciągu zawierającego kostki. Na rysunku nie uwzględniono niepotrzebnego znaku nowej linii wstawionego w celu zawinięcia, dzięki czemu kod można zobaczyć bez przewijania:
źródło
Ruby,
201197 znaków(i jest to jedna linijka)
Edycja 1: Użyto% W (), aby uniknąć .split i pary cudzysłowów.
Edycja 2: Dostosowano do specyfikacji (dwie spacje między każdą kolumną wyjściową)
źródło
x.join(" ").gsub(/Q ?/,"Qu")
poprawiłoby to kosztem trzech dodatkowych znaków).join
łańcuchu oraz dodatkowa spacja i znak zapytania w wyrażeniu regularnym, na wypadek, gdyby oprogramowanie SE zmieniło spacje ...)PowerShell, 234 znaki
Oto ten sam kod z dodatkową białą spacją, próbując poprawić czytelność :-)
Nie znam wbudowanej
shuffle
funkcji PowerShell, więc zamieniłem każdy wynik w parę klucz-wartość - klucz równy wynikowi kości i wartość równa liczbie losowej. Potem wystarczyło posortować te pary według wartości, a następnie wyprowadzić klucze.źródło
Perl, 179 znaków
Oto pełna wersja programu:
źródło