Эта задача представляет собой простую задачу ASCII-искусства, вдохновленную солнечным затмением, которое произошло 21 августа 2017 года. С учетом входных данных 0 <= n <= 4
выведите соответствующую стадию затмения, описанную ниже:
n=0:
*****
** **
* *
* *
** **
*******
n=1:
*****
** *****
* *******
* *******
** ******
*******
n=2:
*****
*********
***********
***********
***********
*******
n=3:
*****
***** **
******* *
******* *
****** **
*******
n=4:
*****
** **
* *
* *
** **
*******
правила
- Вы можете 0 или 1 индекс, указать, что вы выбрали.
- Используемые символы являются пробелами, и
*
вы можете использовать любой печатный символ для*
(кроме пробела). - Конечные пробелы не являются обязательными (вы можете иметь или не иметь их).
- Это код-гольф , самый низкий счетчик байтов является победителем.
*
» ... включая пробел? ;)Ответы:
Python 2 ,
161,149,142,135 байтов.Попробуйте онлайн!
-7 спасибо мистеру Xcoder .
источник
Древесный уголь ,
82815543 байта-38 байт благодаря Нейлу!
Попробуйте онлайн! Ссылка на подробную версию.
Я сделал это, черт возьми. : P
Я, вероятно, выйду из игры в гольф на 40 байтов.2638 байт ... Достаточно близко?источник
PolygonHollow
. : P 2) О, приятно. Благодарность!Корица , 70 байт
HexDump:
Попробуйте онлайн!
Я так долго ждал, чтобы узнать, как использовать этот язык. :П
Итак, Cinnamon Gum - это Bubblegum, но это более «настоящий» язык, чем Bubblegum.
Первый byte (
l
) устанавливает режим в режим словаря. Остальная часть байтов является следующей сжатой строкой.По сути, это создает таблицу поиска с каждым текстом, назначенным на номер. Затем программа принимает ввод и выводит соответствующий текст.
источник
argument%4
илиargument&3
сохранить байты?JavaScript (ES6),
103102 байтаРедактировать: 1 байт сохранен благодаря @darrylyeo.
источник
*666777333*\n
в переменной.SOGL V0.12 ,
4039 байтПопробуй здесь!
источник
VI, 108 байт
<CR>
являетсяEnter
инсульт,<C-?>
соответствуетControl + ?
, и<Esc>
кEscape
очевидно. Каждый из них считается за 1 байт (см. Мета ). Разрывы строк в решении предназначены для удобства чтения. Только<CR>
представляет реальныеEnter
удары.вход
Входной файл должен содержать только 1 символ, представляющий
n
.запуск
VI должен быть запущен как:
Пояснения
В решении 3 части. Сначала я опишу 2-ю часть (2-я строка), так как это проще всего объяснить.
Рисовать солнце
Команда рисовать солнце:
ВС должны быть нарисованы
,
*
,0
,1
и3
, как это:Симметрия помогла бы уменьшить размер в байтах этой части, но это не так важно. Я не буду объяснять всю линию, но шаблон
*****
используется легко генерировать последнюю строку, и образец**1110333**
был взят в качестве эталона для создания 3 других строк , содержащих0
,1
и3
.Важно , чтобы использовать
0
,1
и3
для солнечных частей , которые могут быть заполнены (см следующих пояснений). Рисование этого солнца занимает 55 байт , и, возможно, с некоторыми хитростями можно играть в гольф.Заполнение солнцем согласно
n
Чтобы правильно заполнить солнце, следуйте инструкциям:
n = 0
, то0
,1
и3
(все цифры) должны быть замененыn = 1
, то1
следует заменить на, другие цифры с
*
n = 2
, то0
,1
и3
(все цифры) должны быть заменены*
n = 3
, то3
следует заменить на, другие цифры с
*
n = 4
, то0
,1
и3
(все цифры) должны быть заменены(как
n = 0
)Исходя из этого, мы можем сделать вывод, что необходимые замены:
( первая замена )
*
( вторая замена )Обратите внимание, что «некоторые цифры» могут означать «без цифр» (
n = 2
например). И «все остальные цифры» также могут представлять «без цифр», если все цифры уже были заменены первой заменой (n = 0
например).Вторая замена может быть легко записана в 11 байт :
Первая замена зависит
n
, поэтому сначала мы должны рассчитать , какие цифры будут заменены. Если замененные символы хранятся в регистреa
, команда замещения записывается также в 11 байтах :<C-r>a
заменяется содержимым регистраa
при вводе команды.Для вычисления значения
a
, следуя предыдущим инструкциям, алгоритм (в псевдокоде):"X"
Строка используется, потому что, когдаn = 2
, никакие цифры не заменяются пробелами. Любая строка, которая не является солнцем, могла бы использоваться здесь, пока первая замена ничего не делает.Это может быть записано в 31 байте :
Решение
Разместите все эти части в правильном порядке, и у вас есть решение:
источник
PHP, 114 + 1 байт
+1 байт за
-R
. Спасибо @Neil за подсказку.использует подчеркивание для
*
0, проиндексировано. Запустите как трубу с-nR
или попробуйте онлайн .Требуется PHP 5.5 или более поздняя
версия : более старый PHP не понимает индексацию буквенных строк (ошибка разбора);
PHP 7.1 жалуется нечисловых значений (заменить
+$c
с ,$c>0
чтобы исправить).источник
" _"[$c*2>>$argn&1]
позволяет избежать отрицательных параметров сдвига, если вам это нужно.Python 2 ,
170169 байтПопробуйте онлайн!
источник
Python 2 , 181 байт
Попробуйте онлайн!
Очень наивный подход,
работающий нагольфе.источник
Java 8,
225213211 байтПопробуй это здесь.
источник
05AB1E , 46 байтов
Попробуйте онлайн!
источник