Очевидно, что эта задача будет тривиальной с отдельными функциями и библиотеками, поэтому они не допускаются.
Ваш код должен соответствовать спецификации ECMAscript (подойдет любая спецификация), поэтому нет ответов, специфичных для браузера.
Массив должен быть доступен после его создания.
У меня есть ответ, который я пока воздержусь.
Примечание: эта проблема специфична для javascript, потому что, как известно, неудобно создавать многомерные массивы в javascript.
code-golf
javascript
array-manipulation
Shmiddty
источник
источник
[10]
[[10]]
?Ответы:
Javascript ES6, 30
ES6 в действии :)
источник
Javascript, 34 байта
Поскольку, по-видимому, можно сделать строки равными по ссылке, я полагаю, что можно полагаться на этот факт. Это помогает нам избавиться от одного цикла for, создавая таблицу одновременно с ее строками. Итак, вот мой новый участник.
Поскольку
r[0]
иb[0]
перезаписываются во время цикла, они могут содержать мусор. Это дает нам еще один свободный слот для выполнения, чтобы сбрить некоторые запятые. К сожалению,r=b=[]
не подойдет, с тех пор они равны по-реф.Кроме того, он хорошо масштабируется (99x99 по-прежнему 34 байта), не требует ES5 (в любом случае, новые функции имеют ужасно длинные имена), и в качестве бонуса он не читается :-)
источник
c=[b=[i=10]];while(i--)b[i]=c,c[i]=1
. Должен был знать !!!ECMAScript 6 - 33 символа
Выводит массив «1» размером 10x10.
Это нарушает тот факт, что строка «1111111111» имеет все необходимые свойства, которые должны обрабатываться, как если бы это был массив, поэтому вы можете использовать оператор распространения,
...
чтобы преобразовать его в массив символов, а затем сопоставить его с копией массива с помощью каждый элемент ссылается на «оригинал».Или только с одним именем переменной (для 35 символов):
Или для дополнительной путаницы (но в 45 символов)
или (43 символа)
источник
...
оператора!44 байта
Предыдущая версия:
источник
^
за!=
45 персонажей
Каждый элемент указывает на один и тот же массив, но в спецификации ничего не сказано против этого!
источник
x=
в началеJavascript, 51
Или если все индексы могут указывать на один и тот же массив:
Javascript, 41
источник
a[0][1] = 5; console.log(a[1][1])
).JavaScript,
4544 байтаЛучшее, что у меня есть. (Все еще пытаюсь).
Короче (спасибо, мелламокб!)
источник
for
это почти всегда предпочтительнее, чемwhile
при игре в гольф. Базовое утверждение такой же длины (while()
vsfor(;;)
), ноfor
дает вам больше гибкости. В этом случае вы можете вставитьx=[]
инициализаторfor
и сохранить один символ.Javascript, 47
Поскольку мое оригинальное решение было побито, я сейчас опубликую его.
К сожалению,
0x3FF.toString(2)
это не так эффективно, как просто перечислить строку, что не так эффективно, как статическое объявление массива.Вы можете сбрить одного персонажа таким образом ( 46 ):
Вы можете сохранить еще 2 символа, например, так: ( 44 )
Другое 44-байтовое решение с использованием замыканий выражений функций JS 1.8 (только FF atm):
источник
i
вa
следующем образом:a=[i=10]
JavaScript, 57 байт
Перед игрой в гольф:
Примечание: для этого требуется ES5, поэтому не ожидайте многого от IE.
источник
eval('a=['+(b=Array(11)).join('['+b.join("1,")+'],')+']')
. Помимо разных кавычек и моей переменной внутри eval, они точно такие жеa=eval("["+Array(11).join("[1,1,1,1,1,1,1,1,1,1],")+"]")
имеет 5654
Это уже было побеждено, но вот мое решение:
источник
x=
доx().map
(илиy=
и т. Д.), Чтобы сделать его доступным, верно?39 байт
Использование понимания массива в ECMAScript 7:
источник
[1,1,1,1,1,1,1,1,1,1]
сArray(10).fill(1)
бритья 4 знака.56 символов
Довольно длинный ответ, но будет лучше для 100х100 и т. Д.
источник
Javascript, 36 символов (ECMA 6)
Протестировано в моем браузере (Firefox на Ubuntu) и в интерпретаторе Codecademy Javascript
источник
ES6, 54
Это не самое короткое, но я подумал, что пойду по-другому, к тому, что уже здесь.
источник
a
уже существовала эта версия, которая, казалось, работала. Обновленная версия должна работать в FF и узле с флагами --harmony.61 для развлечения
источник
Javascript -
646359 символовОдин символ сохраняется, скрывая итератор в массиве.Сохранены некоторые символы с предложениями Янса.
Читаемая версия:
Да, это не самое короткое решение, а другой подход без использования готовых
[1,1,1,1,1,1,1,1,1,1]
массивов.источник
i-->0
наi--
. Оператор downto хорош, но на самом деле это не обязательно.==0
может быть сбрита на два бита, а также. Кроме того, пропуститеvar
. Хотя обычно это полезно, четыре бесполезных байта здесь просто неприемлемы.Javascript 69 символов (на данный момент)
источник
JavaScript 73
источник
r=[10],
ничего не делает, как вы сразу перезаписатьr[0]
. Вам не нужно объявлятьs
и можно просто сделать,"1111111111".split("")
но это 22 символа, тогда[1,1,1,1,1,1,1,1,1,1]
как только 21 символ.Javascript ES6, 53
Но в массиве есть строки :)
источник
Javscript ES6, 53
источник
JavaScript (ES6), 35 байт
источник
f=>Array(10).fill(Array(10).fill(1))
(определение анонимной функции) для 36 байтов.