Dzisiejsze wyzwanie jest proste: bez żadnego wkładu, wypisz dowolną prawidłową planszę sudoku.
Jeśli nie znasz sudoku, Wikipedia opisuje, jak powinna wyglądać ważna tablica :
Celem jest wypełnienie siatki 9 × 9 cyframi, tak aby każda kolumna, każdy wiersz i każda z dziewięciu podsiatek 3 × 3, które składają się na siatkę (zwaną także „ramkami”, „blokami” lub „regionami”), zawierały wszystkie cyfry od 1 do 9.
Teraz chodzi o to ... Istnieje 6,670,903,752,021,072,936,960 różnych prawidłowych plansz sudoku . Niektóre z nich mogą być bardzo trudne do skompresowania i wygenerowania w mniejszej liczbie bajtów. Inne z nich mogą być łatwiejsze. Częścią tego wyzwania jest ustalenie, które płyty będą najbardziej ściśliwe i które mogą być generowane w jak najmniejszej liczbie bajtów.
Twoje zgłoszenie niekoniecznie musi generować tę samą tablicę za każdym razem. Ale jeśli możliwych jest wiele wyjść, musisz udowodnić, że każde możliwe wyjście jest prawidłową kartą.
Możesz użyć tego skryptu (dzięki Magic Octopus Urn) lub dowolnej z tych odpowiedzi, aby sprawdzić, czy konkretna siatka jest prawidłowym rozwiązaniem. Wygeneruje a [1]
dla prawidłowej planszy i cokolwiek innego dla nieprawidłowej planszy.
Nie jestem zbyt wybredny w tym, w jakim formacie wypisujesz swoją odpowiedź, o ile jest ona wyraźnie dwuwymiarowa. Na przykład można wyprowadzić macierz 9x9, dziewięć macierzy 3x3, ciąg, tablicę ciągów, tablicę liczb całkowitych 9 lub 9 cyfr z separatorem. Wyprowadzenie 81 cyfr w 1 wymiarze byłoby niedozwolone. Jeśli chcesz wiedzieć o konkretnym formacie wyjściowym, możesz zapytać mnie w komentarzach.
Jak zwykle jest to gra w golfa , więc napisz najkrótszą odpowiedź, jaką możesz wymyślić w wybranym przez siebie języku!
źródło
Odpowiedzi:
Pyth,
22141210 bajtówZaoszczędzono 2 bajty dzięki Mr. Xcoder.
Wypróbuj tutaj
źródło
m.<S9d%D3 9
..<LS9%D3 9
.Python 2 , 47 bajtów
Wypróbuj online!
źródło
T-SQL,
9689 bajtówZnaleziono jeden krótszy niż trywialny wynik!
Wyodrębnia ciągi 9-znakowe zaczynające się w różnych punktach, zgodnie z tabelą utworzoną przez w pamięci
STRING_SPLIT
(obsługiwaną w SQL 2016 i nowszych). To0+value
był najkrótszy sposób, w jaki mogłem wykonać niejawną rzutowanie na liczbę całkowitą.Oryginalny trywialny wynik (96 bajtów):
źródło
Galaretka , 7 bajtów
Wypróbuj online!
I trochę tego ...
-1 dzięki Jonathanowi Allanowi (myśli?)
źródło
Python 2 , 53 bajty
Wypróbuj online!
Alternatywy:
Python 2 , 53 bajty
Wypróbuj online!
Python 2 , 54 bajty
źródło
Python 3 ,
5855 bajtówWypróbuj online!
Elementy łańcucha bajtów kończą się na liczbach,
[1, 4, 7, 2, 5, 8, 3, 6, 9]
które są używane do permutacji obrotów[0..9]
.0
Usuniętol[1:i]
i nie ma potrzeby pustego bajtu, który trwa dwa characaters (\0
) do reprezentowania obiektu w bajtach.55 bajtów
źródło
Galaretka ,
98 bajtówWypróbuj online!
źródło
Partia, 84 bajtów
Wykorzystuje dane wyjściowe @ Mnemonic.
call
służy do interpolacji zmiennej w operacji krojenia (zwykle przyjmuje tylko stałe numeryczne).źródło
JavaScript (Node.js) , 47 bajtów
Dane wyjściowe jako tablica wierszy.
Wypróbuj online!
Generuje to:
źródło
Perl 6 ,
40 3227 bajtów-5 bajtów dzięki nwellnhof
Wypróbuj online!
Anonimowy blok kodu, który zwraca macierz 9x9. Odwzorowuje każdy wiersz na inny obrót w zakresie od 1 do 9.
źródło
J , 18 bajtów
Wypróbuj online!
Wydajność
Jak to działa
Fantazyjna wersja, 23 bajty
Wypróbuj online!
Wydajność:
Jak to działa
źródło
05AB1E ,
1412 bajtów-2 bajty, tworząc port odpowiedzi Pyth @Mnemonic .
Wypróbuj online. (Stopka została dodana, aby wydrukować ją całkiem ładnie. Rzeczywistym wynikiem jest matryca 9 x 9; możesz ją usunąć, aby zobaczyć stopkę).
Wyjaśnienie:
Oryginalne rozwiązanie 14 bajtów :
Wypróbuj online. (Stopka została dodana, aby wydrukować ją całkiem ładnie. Rzeczywistym wynikiem jest matryca 9 x 9; możesz ją usunąć, aby zobaczyć stopkę).
Wyjaśnienie:
Obie odpowiedzi powodują Sudoku:
źródło
Octave i Matlab,
504829 bajtówWypróbuj online!
-2 dzięki Johnathon Frech
-14 dzięki sugestii dodania Sanchises Broadcast, która wskazała również na niezgodność.
-5, zauważając, że wektor można zapisać w matlabie za pomocą łańcucha znaków i transpozycji.
Było intuicyjne, teraz już nie tak. Wykorzystuje sumowanie emisji do rozłożenia 1: 9 na 9 wierszy, rozłożonych według wartości określonych przez ciąg znaków.
Wyprodukowano planszę Sudoku:
źródło
Haskell , 41 bajtów
Wypróbuj online!
źródło
s=
ponieważ nie jest to konieczneJava 10,
8275 bajtów-7 bajtów, tworząc port jednej z odpowiedzi @TFeld na Python 2 .
Wypróbuj online.
Wyjaśnienie:
Generuje następujące sudoku (rozdzielone spacjami zamiast znaków nowej linii, jak poniżej):
źródło
Python - 81 bajtów
Wypróbuj online
Lubię mieć 81 bajtów, ale po optymalizacji :(
Python 2 -
75 68 5958 bajtów-7 bajtów dzięki @DLosc
-9 bajtów dzięki @Mnemonic
-1 bajt dzięki @JoKing
Wypróbuj online
źródło
r=range(1,10)
ale nie mogłem zrujnować pięknal
Rubinowy , 34 bajty
Wypróbuj online!
źródło
R , 54 bajty
Wydajność:
Wypróbuj online!
źródło
Ogromne podziękowania dla @Shaggy!
JavaScript (Node.js) , 61 bajtów
Wypróbuj online!
źródło
MathGolf ,
1611 bajtówWypróbuj online!
Zaoszczędź 5 bajtów dzięki JoKing
źródło
Płótno ,
1311 bajtówWypróbuj tutaj!
źródło
C (brzęk) , 65 bajtów
Funkcję można teraz ponownie wykorzystać
Wypróbuj online!
źródło
f(); f()
wysyła tę samą płytę dwa razy, ale nie, jeśli drugie połączenie w ogóle nie działa.f(i){for(i=81;i--;)printf("%d%c",(i/9*10/3+i)%9+1,i%9?9:10);}
K (ngn / k) , 16 bajtów
Wypróbuj online!
Pierwsza odpowiedź w ngn / k, wykonana z dużą pomocą samego mężczyzny, @ngn.
W jaki sposób:
źródło
Japt,
1110 bajtówWypróbuj lub sprawdź dane wyjściowe
Wyjaśnienie
źródło
Węgiel drzewny , 14 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wykorzystuje dane wyjściowe @ Mnemonic. Wyjaśnienie:
źródło