Oczywiście to wyzwanie byłoby trywialne z oddzielnymi funkcjami i bibliotekami, więc nie są dozwolone.
Twój kod musi być zgodny ze specyfikacją ECMAscript (każda specyfikacja zrobi), więc nie ma odpowiedzi specyficznych dla przeglądarki.
Tablica musi być dostępna po utworzeniu instancji.
Mam odpowiedź, której na razie odmówię.
Uwaga: to wyzwanie jest specyficzne dla javascript, ponieważ tworzenie wielowymiarowych tablic w javascript jest niezwykle niewygodne.
code-golf
javascript
array-manipulation
Shmiddty
źródło
źródło
[10]
[[10]]
?Odpowiedzi:
JavaScript ES6, 30
ES6 w akcji :)
źródło
JavaScript, 34 bajty
Ponieważ pozornie poprawne jest wyrównanie wierszy przez odniesienie, wydaje mi się, że można polegać na tym fakcie. Pomaga nam to ogolić jedną pętlę for, budując stół w tym samym czasie, co jego rzędy. Oto mój nowy zawodnik.
Ponieważ
r[0]
ib[0]
są nadpisywane podczas pętli, mogą zawierać śmieci. Daje nam to kolejny darmowy automat do wykonania, który pozwala na zmniejszenie liczby przecinków. Niestetyr=b=[]
nie zrobi tego, ponieważ od tego czasu są równi.Ponadto skaluje się dobrze (99x99 to wciąż 34 bajty), nie wymaga ES5 (nowe funkcje i tak mają strasznie długie nazwy), a dodatkowo jest nieczytelny :-)
źródło
c=[b=[i=10]];while(i--)b[i]=c,c[i]=1
. Powinien wiedzieć!!!ECMAScript 6 - 33 znaków
Wysyła tablicę 10x10 „1”.
To narusza fakt, że ciąg „1111111111” ma wszystkie wymagane właściwości, które należy traktować tak, jakby był tablicą, dzięki czemu można użyć operatora rozkładania
...
do przekształcenia go w tablicę znaków, a następnie odwzorować go na kopię tablicy za pomocą każdy element odwołuje się do „oryginału”.Lub tylko z jedną nazwą zmiennej (dla 35 znaków):
Lub dla dodatkowego zamieszania (ale przy 45 znakach)
lub (43 znaki)
źródło
...
operatora!44 bajty
Poprzednia wersja:
źródło
^
dla!=
45 znaków
Każdy element wskazuje na tę samą tablicę, ale specyfikacja nic o tym nie wspomina!
źródło
x=
na początkuJavaScript, 51
Lub jeśli wszystkie indeksy mogą wskazywać tę samą tablicę:
JavaScript, 41
źródło
a[0][1] = 5; console.log(a[1][1])
).JavaScript,
4544 bajtówJak dotąd najlepiej. (Ciągle próbuje).
Krótszy (dzięki mellamokb!)
źródło
for
prawie zawsze jest lepsza niżwhile
podczas gry w golfa. Podstawowa instrukcja ma tę samą długość (wwhile()
porównaniufor(;;)
), alefor
daje większą elastyczność. W takim przypadku możesz wprowadzićx=[]
inicjalizatorfor
i zapisać jeden znak.JavaScript, 47
Ponieważ moje oryginalne rozwiązanie zostało pobite, teraz je opublikuję.
Niestety,
0x3FF.toString(2)
nie jest tak wydajna, jak zwykłe wypisanie łańcucha, co nie jest tak wydajne jak zwykłe deklarowanie tablicy.W ten sposób możesz ogolić jedną postać ( 46 ):
Możesz zapisać 2 kolejne postacie: ( 44 )
Kolejne 44-bajtowe rozwiązanie wykorzystujące zamknięcia wyrażeń funkcji JS 1.8 (tylko FF atm):
źródło
i
wa
następujący sposób:a=[i=10]
JavaScript, 57 bajtów
Przed golfem:
Uwaga: Wymaga ES5, więc nie oczekuj zbyt wiele od IE.
źródło
eval('a=['+(b=Array(11)).join('['+b.join("1,")+'],')+']')
. Oprócz różnych cytatów i mojej zmiennej eval, są one dokładnie takie samea=eval("["+Array(11).join("[1,1,1,1,1,1,1,1,1,1],")+"]")
ma 56 lat54
To już zostało pokonane, ale oto moje rozwiązanie:
źródło
x=
przedx().map
(luby=
itp.), Aby był dostępny, prawda?39 bajtów
Korzystanie ze zrozumienia tablic w ECMAScript 7:
źródło
[1,1,1,1,1,1,1,1,1,1]
zArray(10).fill(1)
golenia 4 znaków.56 znaków
Dość długa odpowiedź, ale będzie lepsza dla 100 x 100 itp.
źródło
JavaScript, 36 znaków (ECMA 6)
Testowane w mojej przeglądarce (Firefox na Ubuntu) oraz w interpretera JavaScript Codecademy
źródło
ES6, 54
To nie jest najkrótsze, ale pomyślałem, że wybiorę inne podejście do tego, co już jest.
źródło
a
istniała już ta wersja, która chyba działała. Zaktualizowana wersja powinna działać w FF i węźle z flagami --harmony.61 dla zabawy
źródło
JavaScript -
646359 znakówJeden znak uratowany przez ukrycie iteratora w tablicy.Zapisałem kilka znaków z sugestiami Jansa.
Wersja do odczytu:
Tak, nie jest to najkrótsze rozwiązanie, ale inne podejście bez użycia gotowych
[1,1,1,1,1,1,1,1,1,1]
tablic.źródło
i-->0
nai--
. Chociaż operator „downto” jest fajny, tak naprawdę nie jest konieczny.==0
mogłyby zostać zgolone również przez dwa bity. Pomiń teżvar
. Choć zwykle są użyteczne, cztery niepotrzebne bajty są tutaj po prostu niedopuszczalne.JavaScript 69 znaków (na razie)
źródło
JavaScript 73
źródło
r=[10],
nic nie robi, gdy natychmiast nadpisujeszr[0]
. Nie musisz deklarowaćs
i możesz to zrobić,"1111111111".split("")
ale to 22 znaki, a[1,1,1,1,1,1,1,1,1,1]
tylko 21 znaków.JavaScript ES6, 53
Ale te w tablicy są ciągami :)
źródło
Javscript ES6, 53
źródło
JavaScript (ES6), 35 bajtów
źródło
f=>Array(10).fill(Array(10).fill(1))
(definiując funkcję anonimową) dla 36 bajtów.