Напишите программу или функцию, которая принимает неотрицательное целое число N из стандартного ввода или в качестве аргумента функции. Он должен напечатать или вернуть строку полого квадрата ASCII-art, каждая сторона которого сделана с N копиями числа N.
В частности:
Если N есть 0
, копии N не используются, поэтому не должно быть выходных данных (или только один завершающий символ новой строки).
Если N равно 1
, вывод:
1
Если N это 2
:
22
22
Если N это 3
:
333
3 3
333
Если N это 4
:
4444
4 4
4 4
4444
Если N это 5
:
55555
5 5
5 5
5 5
55555
Шаблон продолжается до 6
конца 9
.
Если N равно 10
, вывод:
10101010101010101010
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10101010101010101010
Обратите внимание, что это на самом деле не квадрат. Это 10 строк в высоту, но 20 столбцов в ширину, потому что 10
это два символа в длину. Это предназначено. Дело в том, что каждая сторона «квадрата» содержит N копий N. Таким образом, все входные данные 9
будут технически прямоугольниками ASCII.
Например, если N равно 23
, вывод:
2323232323232323232323232323232323232323232323
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
2323232323232323232323232323232323232323232323
Вот Pastebins искомых выходов для 99
, 100
, 111
и 123
(они могут выглядеть неправильно в браузере , но в текстовом редакторе , они будут выглядеть правильно). Выходные данные для for 1000
являются большими для Pastebin, но они будут иметь 1000 строк и 4000 столбцов. Числа с 4 или более цифрами должны работать так же, как меньшие числа.
Подробности:
- N должно быть записано в обычном представлении десятичного числа без
+
знака или других нецифровых чисел. - Полость должна быть заполнена только пробелами.
- Ни в одной строке не должно быть начальных или конечных пробелов.
- Отдельная новая строка после последней строки квадратов может быть разрешена.
- Языки, написанные после выполнения этого задания, приветствуются, они просто не имеют права на победу .
- Самый короткий код в байтах побеждает!
источник
Ответы:
Джольф,
31272523 байтаЭто кодируется в кодировке ISO-8859-7 и содержит непечатаемые, поэтому вот hexdump:
Попробуйте эту скрипку онлайн или проверьте все тестовые случаи одновременно (используйте кнопку полного запуска) .
Это происходит с ошибкой для n = 0, которая разрешена по умолчанию.
Огромное спасибо Конору за игру в гольф
46! байт. Inb4 вычеркнул четыре все еще выглядит как четыре комментарияобъяснение
источник
xxd -r
.Штрипед , 317 байт
Пока я задаю вопрос, я могу показать свой новый "пуристский" язык.
(определенно работает в v1.0.0 )
Нет никаких математических операций, встроенных в Shtriped, кроме увеличения и уменьшения. Там также нет циклов или условных выражений, поэтому все эти вещи нужно создавать с нуля в каждой программе.
Это то, что моя программа, например
@
, по существу , для цикла,+
является функцией сложения,}
является>=
. Фактический вывод производится только в последних 8 строках программы.В Штрипеде тоже нет струн. Вы можете принимать и распечатывать строки, но все они представляются внутри как целые числа произвольной точности, которые могут только увеличиваться и уменьшаться. Так что нет простого способа получить длину строки
10
для заполнения квадратного центра нужным количеством пробелов. Мне пришлось собрать воедино функцию,~
которая эффективно вычисляет,floor(log10(N)) + 1
чтобы найти длину N в десятичной дроби.Это, вероятно , может быть golfed немного больше перестановки , где и как , которые используются переменные, но не , что намного больше. Нельзя обойти присущие Штрипеду ограничения. (Так или иначе, он никогда не был языком игры в гольф.)
Код с комментариями (обратный слеш - это комментарий):
источник
Серьезно,
32313029 байтПопробуйте онлайн!
Объяснение:
источник
JavaScript (ES6),
73 8278 байтСохранено a4 байта благодаря @ user81655
Принимает строку, а не число для ввода.
Попробуйте онлайн (все браузеры работают)
источник
*(n-2)
на,*~-~-n
чтобы сохранить байт.MATL ,
342926 байтЭто работает с текущей версией (13.0.0) языка / компилятора
Попробуйте онлайн!
источник
T-SQL / SQL Server 2012+,
167161 байтВыход:
LiveDemo
Введите желаемый размер и нажмите, Run queryчтобы получить текстовое представление.
Обратите внимание, что эта демонстрация не отображает шрифт фиксированной ширины . Так
7
толще чем1
.РЕДАКТИРОВАТЬ:
Если мы будем рассматривать ввод как строку:
LiveDemo2
источник
Юлия, 78 байт
Это анонимная функция, которая принимает целое число и печатает прямоугольник ASCII в STDOUT. Чтобы вызвать его, присвойте его переменной.
Ungolfed:
Попробуйте онлайн
источник
Рубин, 100 байт
Жаль, что я даже не смог победить JS. Любая дальнейшая помощь в игре в гольф будет признательна.
Вот более или менее безголосая версия:
источник
n.to_s
так как вы используете ее так много, давая вамm*n
для первой части иm+" "*[(n-2)*m.length,0].max+m
для второй части.Сетчатка, 76 байт
Объяснение, возможно, придет завтра.
Попробуйте это онлайн здесь.
источник
C ++ 14, 156 символов
Я думал, что это было довольно крутое решение, хотя, очевидно, не может побить большинство других записей здесь.
Ungolfed:
И, как всегда, для вызова функции использовать
[](string t) { ... }("10");
источник
TSQL,
112104 байтаисточник
Минколанг 0,15 , 57 байт
Попробуй это здесь!
объяснение
источник
Perl,
797674 байтаДовольно просто. Первый аргумент командной строки принимается за число. Поместите скрипт в файл и запустите
perl file.pl 1
.источник
shift
можно заменить наpop
.Perl
626058 + 2 = 60 байтТребуются
-nlE
флаги:С добавленными пробелами:
источник
R, 90 байт
Это создает матрицу
x*x
размера и затем заполняет пробелы размераnchar(x)
. Еслиx
меньше 2, то ничего не заполняется.источник
x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")
на 10 байтов меньше, используя отрицательную индексацию и заменяя ееn=x,s=''
наx,,''
tio.run/nexus/r#DYpBCsAgDAT/…write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")
для 72 байтов.Pyth - 26 байт
Попробуйте это онлайн здесь .
источник
Пип
-l
, 21 байтИспользует языковые функции более новые, чем вопрос, который разрешен в соответствии с текущей политикой; если формулировка вопроса интерпретируется как переопределение указанной политики, см. 25-байтовый ответ ниже.
Попробуйте онлайн!
Благодаря ответу MATL Луиса Мендо на
(a+1)%n<2
хитрость.объяснение
Yq
читает строку из стандартного ввода и вставляет ее вy
. Затем:Оригинальный ответ 2016 года, 25 байтов (плюс
-l
флаг):Changelog:
MC
был добавлен совсем недавно; в то время я использовалMMCG
(карта-карта + координатная сетка).++
списки, поэтому мне пришлось сделать это++*
(применить++
к каждому элементу).M
AP был расширен: теперь<string1> M <string2>
возвращает списокlen(<string2>)
копий<string1>
; в то время я использовалsX#y
пробел, повторяющий строкиlen(y)
.источник
Pyth,
3730 байтПопробуй это здесь.
источник
Сетчатка , 90
Опять же, я почти уверен, что это будет очень хорошо для экспертов:
Попробуйте онлайн.
источник
¶
вместо того,;
чтобы избавиться от последней стадии?)[^¶]+
это удобно.+
.Желе, 28 байт
Грр, не могу сказать, плохо ли Джелли в струнах, или я плох в Джелли.
Попробуйте онлайн.
источник
Пайк , 33 байта (неконкурентный)
Объяснение:
источник
CJam, 27 байт
Спасибо @ MartinBüttner за предложение
ff
. Этоa+[0X(]&
довольно подозрительно, ну да ладно.Попробуйте онлайн!
источник
Python 2, 70 символов
источник
Haskell, 78 байт
Пример использования:
Функция
>>
пригождается:<list> >> <string>
делаетlength <list>
копии<string>
, например , верхней и нижней линии дляx=10
являются[1..10] >> "10"
->"10101010101010101010"
.источник
1
чего выкрикивает один1
. Кроме того, вы возвращаете список строк, в то время как в запросе запрашивается одна строка. У нас были гораздо более строгие правила ввода-вывода в те дни, гибкие правила ввода-вывода стали более свежими.Perl, 72 байта
Полагается на современные возможности Perl:
автоматически доступен с Perl 5.10 (просто используйте v5.10 или новее).
с удовольствием принимает на работу на RValue (An str_expr не обязательно сводится к переменной скалярной) с получением г esult (далее « г опцию» в конце регулярного выражения) без изменения первоначального str_expr.
источник
PHP, 151 байт
Абсолютный беспорядок, нужно больше времени для оптимизации.
s(Number)
дает вам выход.источник
Java 8, 280 байт
Это только в 10 раз больше, чем самые короткие ответы, что действительно хорошо для Java!
Пример выполнения:
источник
Python 3,
10896148 байтUngolfed / объяснил:
Так как это мой первый ответ по коду , некоторые конструктивные критические замечания и / или предложения будут полезны!
источник
while b!=0:print(a+" "*int(len(a))*c+1);b-=1
. Кроме того,while b:
эквивалентноwhile b!=0
, так что это еще 3 байта ушло.Ржавчина,
141137 байтЗлоупотребляли некоторыми вещами форматирования, иначе это было бы намного дольше.
Распакованный:
Playground Link
источник
Powershell,
989695838275 байтРазоблаченный и объясненный тестовый скрипт:
Выход:
источник