Вызов
Создать самую короткую программу, соответствующую требованиям
Требования
Код должен генерировать 5x5 сетку из 0, например, так:
00000 00000 00000 00000 00000
Код должен принимать входные данные (столбец, строка, символ). Сетка должна измениться соответственно:
Начало:
00000 00000 00000 00000 00000
Входные данные:
(2,5,*)
Выход:
0*000 00000 00000 00000 00000
(Примечание: нижний левый угол - позиция 1,1.)
Программа должна возвращать сообщение об ошибке, кроме сетки , если входная строка / столбец не 1,2,3,4 или 5. Это может быть любое сообщение по вашему выбору ( до тех пор , как это не сетка), так
0
это приемлемый вывод ошибок.Программа должна работать со всеми печатными символами ASCII (с клавиатуры США).
ПОБЕДИТЕЛЬ
Победителем станет тот, у кого самый короткий код и он отвечает всем требованиям. Если более одного ответа работает и имеет одинаковую (самую короткую) длину, победителем будет тот, кто ответил первым.
0
ошибку и таблицу успеха?Ответы:
Дьялог АПЛ ,
171310 байтЗапрашивает закрытый массив, содержащий (строка, столбец), а затем символ. Выдает ОШИБКУ ИНДЕКСА при неправильном вводе.
Попробуйте онлайн!
⊖
перевернуть вверх дном результат⍞
введенный символов@
замена контента на позиции⎕
оцененный ввод (вложенная строка, столбец)⊢
из5 5⍴
5 × 5 массив0
нулиисточник
⊢
необходимым? Я думаю, что в этом случае это избыточно.(⊂⎕)5 5
как один массив из 3 элементов - аргумент для⍴
.Рубин,
157149 байтОшибка при неправильном входе или вне позиции
Спасибо ConorO'Brien (8 байтов) и afuous (2 байта) за помощь в сохранении байтов
источник
loop do...end
->loop{...}
; Я думаюArray.new(5,[0]*5)
, что работает тоже или даже[*[0]*5]*5
.Array.new(5,[0]*5)
создайте массив ссылок и[*[0]*5]*5
создайте плоский массив*
. Тогда это все еще создает массив ссылок.Array.new(5){[0]*5}
может быть заменен на,(1..5).map{[0]*5}
чтобы сохранить 2 байта.Пакетный, 199 байт
Выдает ошибку, если позиция находится вне диапазона.
источник
<
, как^<
. не уверен, что.PHP,
11110097 байтпечатает,
E
если строка / столбец вне диапазона.Бежать с
php -r <code> <row> <column> <character>
источник
Python, 66 байт
источник
Дьялог АПЛ,
242018 байтСохранено 4 байта благодаря Zgarb! Благодаря Адаму сэкономлено 2 байта!
Подсказки для ввода. Смотрите объяснение ниже.
20 байт
Назначьте функцию и вызовите ее
y x f 'c'
. Например:объяснение
{...}
является функцией с левым аргументом⍺
и правым аргументом⍵
.⋄
разделяет утверждения, поэтому существует три утверждения:Первое выражение
a←5 5⍴0
устанавливаетa
в5
по5
сетке0
с.Второй оператор устанавливает элемент в точке с координатами , диктуемых
⍺
к⍵
(то есть, характер).Наконец, мы выполняем
⊖
наa
и вернуться , что, получая от нововведенийa
вспять.источник
{a←5 5⍴0⋄a[⊂⌽⍺]←⍵⋄⊖a}
сохраняет несколько байтов.a←5 5⍴0⋄a[⊂⎕]←⍞⋄⊖a
JavaScript (ES6),
7376 байтВыдает a,
TypeError
если столбец или строка находятся вне диапазона.демонстрация
Показать фрагмент кода
источник
c
илиr
меньше 1?c == 0 || r == 0
. Но я думаю, что вы правы: я буду обновлять его, чтобы предотвратить отрицательные значения.C #, 199 байт
На основании ответа Пита Ардена
Ungolfed:
источник
05AB1E ,
2722 байтаНе возвращает сетку, когда строка / столбец> 5.
Попробуйте онлайн!
Предыдущая версия
источник
Желе , 28 байт
Это слишком долго ...
TryItOnline!
Как?
источник
JavaScript (ES6), 89 байт
Потому что я люблю рекурсию. Выдает
ReferenceError
неправильные координаты.источник
Mathematica, 38 байт
источник
Brain-Flak 415 Bytes
Включает +3 для
-c
Попробуйте онлайн!
Сначала вводится символ, затем строка, затем столбец без пробелов.
Большая часть этого - просто обработка ошибок. У Brain-Flak нет хорошего способа проверить, находятся ли значения в диапазоне. Для ошибок он либо ничего не выводит, либо просто символ, который должен был быть вставлен. Решение актуальной проблемы занимает всего 211 байт:
источник
Excel VBA, 67 байт
Выходы в диапазон A1: E5 в активном листе проекта vba, выход с
когда введен неверный ввод.
Код:
Использование:
Вывод (из примера выше) :
источник
C #, 208 байт
Golfed:
Ungolfed:
Тестирование:
источник
c
и / илиr
выходят за пределы, он будет выбрасывать,IndexOutOfRangeException
так что вы можете удалить первый оператор if, хотя я не проверил спецификации для этого должным образом. Вы можете скомпилировать в a,Func<int, int, char, string>
чтобы сохранить байты, я считаю, что вам нужно добавить егоusing System.Linq;
из-заReverse
вызова, хотя я не могу вспомнить доd[r - 1] = d[r - 1].Substring(0, c - 1) + a + d[r - 1].Substring(c);
чтобыd[--r] = d[r].Substring(0, c - 1) + a + d[r].Substring(c);
сохранить 4 байтаWinDbg, 95 байт
Почти половину из них просто проверочных индексов находятся в диапазоне ... Ввод осуществляется путем установки псевдопользователь-регистры
$t0
,$t1
и$t2
(где$t2
имеет значение ASCII из полукокса заменить). Например,(2,5,*)
как пример будет:Печать
0
по ошибке.Как это устроено:
Пример вывода:
источник
Haskell, 77 байт
Пример использования:
Если
x
иy
находятся в пределах досягаемости, внешний и внутренний цикл проходят[1..5]
и принимают символ,c
если он попадает в заданное,x
и,y
и0
иначе. Еслиx
илиy
не находится в диапазоне, возникаетNon-exhaustive patterns
исключение.источник
Октава 49 байт
источник
QBIC ,
5350 байтовРЕДАКТИРОВАТЬ: Теперь, когда я знаю, что мне не нужно показывать начальную сетку, я поменял пользовательские вводы
_!_!_?
для параметров командной строки::;
, сохранив 3 байта.Исходная версия: Это останавливает между печатью 0-сетки и получением координат для замены, показывая 0-сетку.
Печатает 5 строк по 5
0
, запрашивает у пользователя 2 числовых ввода и 1 ввод строки, проверяет, являются ли числа <5, и используетLOCATE
функцию QBasic для замены правильного символа.источник
Java, 99 байт
источник
> <> (Рыба), 36 байт (не конкурирует)
Попробуй это здесь!
Это выполняется путем размещения параметров в стеке , как [
chr
,y
,x
]. Один из нулей внизу фактически замененchr
инструкциейp
. Возможно, есть лучшие способы сделать это, но я подумал, что это уникальная и интересная ситуация, когда эта функция> <> полезна.объяснение
Эта программа просто вычитает 1 из
x
(как в> <>,0
фактически будет первым столбцом), обмениваетсяx
сy
, а затем изменяет точку кодовой коробкиx, y
наchr
viap
.y
не нужно вычитать из него 1, так как код уже смещен на 1!Неконкурентное объяснение
Это неконкурентоспособно, потому что на самом деле это не дает результата. Я просто нашел это чрезвычайно забавным. Если это считается действительным выводом, пожалуйста, дайте мне знать!
Это также неконкурентоспособно, потому что
y
может быть 0, но я считаю, что это единственная проблема с ответом. Я исправлю, если это будет считаться действительным выводом, но в противном случае ответ будет менее интересным ...источник
Баш, 59 байт
Golfed
$ 1 , $ 2 - строка, столбец, $ 3 - символ замены, ошибка выводится через код выхода
Тестовое задание
источник
Vim,
60474276 нажатий клавишВвод в формате (в первой строке):
С курсором, начинающимся с начала
Если ввод неверен, то выбрасывает:
E492: Not an editor command: ^
Cide, который производит вывод, является только
42
байтами, но для того, чтобы создать ошибку, мой счет байта резко увеличен.источник
Java 8,
194192 байтаПопробуйте здесь с правильным вводом.
Попробуйте здесь с неправильным вводом.
Это будет
116114 байт вместо функции вместо полной программы:Попробуй это здесь.
Объяснение:
источник