Biorąc pod uwagę dodatnią liczbę całkowitą n < 10
, utwórz 2-wymiarową matrycę, w której każda lokalizacja jest wypełniona jego x
i y
indeksem (zaczynając od lewego górnego rogu).
Na przykład:
Wejście: 2
00 10
10 11
Wejście: 3
00 10 20
01 11 21
02 12 22
Po utworzeniu siatki losowo wypełnij każdy indeks. Może to być znak „x” lub dowolny inny sposób oznaczenia, że miejsce zostało wypełnione.
Określasz, którą lokalizację wypełnić, losowo generując wskaźniki wypełniające macierz. Możesz wypełnić tylko n ^ 2 razy, więc nie możesz wypełnić tyle razy, ile chcesz, dopóki matryca nie zostanie całkowicie wypełniona. Na koniec macierz musi zostać wypełniona, więc musisz wykonać pewną pracę, aby upewnić się, że sprawdziłeś liczby losowe, których używasz do wypełnienia, aby upewnić się, że miejsce nie jest już wypełnione.
Odśwież lub wydrukuj po każdym wypełnieniu, aby pokazać postęp iteracji napełniania.
Przykład wypełnienia:
Wejście: 2
00 10
01 11
00
jest wybierany losowo:
XX 10
01 11
01
jest wybierany losowo:
XX 10
XX 11
00
jest wybierany losowo, ale ponieważ został już wybrany, przerzut wybiera 10
:
XX XX
XX 11
11
jest wybierany losowo:
XX XX
XX XX
Nie drukuj liczb losowych, ponieważ wizualnie powinienem być w stanie zobaczyć, który indeks został wybrany. Rozumiem przez to, że nie drukuj „ 11
jest losowo wybierany:”. Jest tu dla dobra eksploracji.
Ponieważ jest to kod-golf Najkrótszy kod wygrywa.
Miłej zabawy i szczęśliwego golfa!
n>= 10
możliwe (musisz zacząć wiedzieć o maksymalnej długości, aby poprawnie wypełnić początkowe 0). Wypełnienie tego przypadku to jeden indeks na raz, a nie 1 cyfra na raz, prawda?Odpowiedzi:
05AB1E , 29 bajtów
Wypróbuj online!
Miejsce wybrane jako znak dla usuniętych liczb (jak ładnie wygląda), ale można je zastąpić dowolnym znakiem bez wpływu na liczbę bajtów.
Wyjaśnienie
źródło
Pip ,
41403836 bajtów35 bajtów kodu, +1 dla
-S
flagi.Pobiera dane wejściowe z argumentu cmdline. Zastępuje się spacją (każdy inny znak jest możliwy dla +1 bajtu). Wyprowadza kolejne iteracje oddzielone pojedynczym znakiem nowej linii (co jest zgodne z prawem, ale może utrudnić czytanie). Wypróbuj online!
Wszystkie rodzaje brudnych sztuczek w tym.Krótsza wersja ma mniej brudnych sztuczek. : ^ (Objaśnienie:źródło
n>=10
randomizacja nie działa poprawnie, ale nadal trafia w sedno. W przypadku liczb większych niż 10 usuwa tylko gdzieindex_i==index_j
. Masz jakiś pomysł, dlaczego tak jest?(mi@##Pmi@0)
części. Wprowadziłem kilka hacków redukujących bajty, które zależą od tego, że indeksy są jednocyfrowe.##
, Rozumiem. Ładne wykorzystanie założeń. Dzięki za wyjaśnienie, haha.Groovy (202 bajtów)
Ten konkretny format wyjściowy pomieszał moją liczbę bajtów, ale meh.
Wypróbuj: https://groovyconsole.appspot.com/edit/5171951567896576 (+9 bajtów dla ładniejszego wydruku)
Nie golfowany:
Przykład wyjścia:
źródło
4x4
kwadrat o indeksie 0 . Sam kwadrat jest po prostu oddzielony znakiem nowej linii, a także każda iteracja jest oddzielona znakiem nowej linii, więc dane wyjściowe działają razem.R,
848174 bajtyTeraz używa jednego indeksowania zamiast zerowania. Pozbyłem się 7 bajtów dzięki @Billywob.
Przykładowe dane wyjściowe dla N = 3
źródło
replace
:for(i in sample(N^2)){m[i]="XX";print(m)}
AWK, 229 bajtów
Dodałem kilka bajtów, aby nadać wyjściu spację między każdą matrycą.
Uwaga: aby uczynić go bardziej „losowym” między biegami, można dodać wywołanie do
srand()
7 dodatkowych bajtów.Wykorzystanie i dane wyjściowe po zapisaniu powyższego kodu w
FILE
:źródło
PHP, 172 bajtów
Awaria
źródło
Python 2, 190 bajtów
źródło