Введение
Вчера я видел загадку дня рождения . Congrats !!
Также на этой неделе я посмотрел эпизод телешоу « Кости», где было найдено мертвое тело, похороненное под деревом. Чтобы рассчитать время смерти, они сосчитали кольца деревьев.
Кольца деревьев образуются потому, что деревья растут медленнее зимой и быстрее летом. Таким образом, вы можете рассчитать возраст дерева путем подсчета колец. Также вы можете увидеть природные явления, такие как дождливый или сухой сезон.
Вызов
Учитывая целое число в n >= 1
качестве входных данных, напишите полную программу для вывода возрастных колец дерева.
Поскольку кольца могут менять свою форму, используйте три разных символа ('0', '*', '+'), чтобы показать климатические циклы.
Возраст 1
0
Возраст 2
***
*0*
***
Возраст 3
+++++
+***+
+*0*+
+***+
+++++
Возраст 4
0000000
0+++++0
0+***+0
0+*0*+0
0+***+0
0+++++0
0000000
Размер дерева представляет собой квадрат сторон 2*n - 1
выигрыш
Самый короткий код в байтах побеждает.
('0', '*', '+')
так 5 лет*
Ответы:
K5,
2730262522 байтаЭтот подход итеративно «оборачивает» ядро (начиная с
"0"
) со всех четырех сторон, используя какой-либо другой символ ({4(|+y,)/x}
). Последовательность сезонных упаковок определяется по модулю 3 (3!
). Немного неудобно заставить базовый корпус выстроиться в ряд.редактировать:
Эта альтернатива строит весь прямоугольный массив сразу из предоставленного исключенного range (
!
), обращенного и объединенного с самим собой после отбрасывания item (t,1_|t:|
). Затем мы берем декартово произведение Maximum (u|\:u:
), берем всю матрицу по модулю 3 (3!
) и индексируем в массив символов.В бою:
источник
BBC Basic, 93 байта
Здесь очень помогают сокращенные ключевые слова. В строке 2 я использую
VDU
команду (эквивалентную букве Cputchar()
) для печати каждого символа. Это намного эффективнее, чемP.MID$("0*+",p MOD3+1,1)
.Вот он работает в BeebEm3 на Mac:
источник
CJam, 25 байтов
Проверьте это здесь.
объяснение
источник
Matlab, 63 байта
Пример:
источник
Python 2, 83 байта
Печатает построчно. Каждая строка разделена на три части:
Для
n=4
:Мы генерируем левую часть в обратном порядке
w
, клонируем время последнего символа2*i
, а затем добавляем исходную версию без первого символа.источник
Python 2, 83 байта
Если мы думаем о дереве как о координатной сетке, символ at
(i,j)
определяетсяmax(abs(i),abs(j))%3
или эквивалентноmax(i,-i,j,-j)%3
. Для каждой строкиi
мы соединяем и печатаем символы в этой строке.источник
R
дважды, и это больше, чем 5 символов, поэтому назначение выигрывает.Pyth, 23 байта
Попробуйте онлайн: демонстрация
Объяснение:
источник
MATLAB,
807873 байтаСпасибо Луису Мендо за помощь в бритье на 5 байт!
пример
Ungolfed и объяснение кода
Незначительная нота
bwdist
это функция, которая входит в набор инструментов для обработки изображений и может быть запущена только в MATLAB. Octave (IIRC) еще неbwdist
реализован, поэтому его нельзя запустить в Octave.источник
eye
и умножать поэлементно на егоrot90
'ed версию, чтобы сгенерировать матрицу "seed":I=eye(2*input('')-1);a='0*+';a(mod(bwdist(I.*rot90(I),'chessboard'),3)+1)
Python 2, 134 байта
источник
Perl, 118 байт
Еще предстоит сделать, но пока базовая версия. Теперь с восхитительным соблюдением дополнительных спецификаций.
Использование:
источник
Matlab 92
источник
Sed,
277252 персонажа(251 символьный код + 1 символьная опция командной строки.)
Ожидается ввод в одинарном формате.
Образец прогона:
источник
JavaScript (ES6), 114
Использование оповещения для вывода - неправильный пропорциональный шрифт и результат ужасный. В приведенном ниже фрагменте предупреждения перенаправляется на отсекаемое тело, что дает лучший результат. Новая строка внутри обратных кавычек значительна и считается.
Попробуйте запустить фрагмент в Firefox.
источник
Test running the snippet in Firefox
но, очевидно, я просто шутил, Chrome (без версии Chrome) не соответствует EcmaScritpt 6, пропуская=>
функции....
. Все еще далеко от ES6Рубин, 85 знаков
Образец прогона:
источник
Moonscript - 104 байта
источник
C, 138 байтов
Функция
t
принимает один целочисленный параметр - возраст.Ungolfed (с
main
функцией, чтобы легко запустить вышеупомянутый):Это
stdlib.h
может быть необходимо в некоторых системах, потому что без него тип возврата необъявленной функции поcalloc
умолчанию будет равенint
. Посколькуint
иchar*
не обязательно того же размера, недопустимый указатель может быть записан вc
. В большинстве 32-битных систем какchar*
иint
имеют одинаковый размер, но это не верно для 64-битных систем.источник