Хэллоуин уже почти здесь, праздник, после которого большинству людей нужно отучиться от пустого рациона из сахара.
Напишите программу, которая принимает положительное целое число. Если целое число меньше 31 (от 1 до 30), выведите этот ASCII-арт jack-o'-lantern, глядя вправо, как будто с нетерпением ожидая Хэллоуина:
_____I_____
| | | | | | |
| | |^| |^| |
| | | |^| | |
| | |VvVvV| |
|_|_|_|_|_|_|
Если вход является 31 (дата октября Хэллоуин включен), выход тем же ASCII блуждающего фонарь, но смотрит влево:
_____I_____
| | | | | | |
| |^| |^| | |
| | |^| | | |
| |VvVvV| | |
|_|_|_|_|_|_|
Если входное значение больше 31, выведите раздутый ASCII-o'-lantern, который, вероятно, съел слишком много конфет. Он может стоять лицом влево или вправо, так как тошнота может дезориентировать. Итак, вывод:
_____I_____
| | | | | | |
| |o| |o| | |
| | |^| | | |
| |XXXXX| | |
|_|_|_|_|_|_|
или
_____I_____
| | | | | | |
| | |o| |o| |
| | | |^| | |
| | |XXXXX| |
|_|_|_|_|_|_|
Что бы вы ни предпочли. Может даже отличаться для разных чисел выше 31.
Самый короткий код в байтах побеждает.
источник
x^n>30
трюк сначала смутил меня, но когда я понял, что происходит, я бесстыдно украл его, чтобы улучшить свой ответ. В качестве компенсации я даю вам голос за это в любом случае.아희 (Aheui) , 914 байт
Попробуй это здесь! (пожалуйста, скопируйте и вставьте код вручную)
Возможно, Aheui не для игры в гольф, но, тем не менее, это весело. :)
Выходы:
N = 10
N = 31
N = 40
источник
Желе , 73 байта
Полная программа
TryItOnline!
Может быть возможно сыграть в гольф с помощью отказов
ŒḄ
.Как?
источник
Рубин, 137 байт
Лицо указывает на и после 31-го.
Неуправляемый в тестовой программе
источник
Древесный уголь , 71 байт
Примечание . Этот код не работает в самом последнем коммите на момент публикации, поскольку индексация строк нарушена. Тем не менее, он должен работать в этой версии с 25 октября. Он также успешно работает в версии, которая в данный момент установлена в Try It Online .
объяснение
Древесный уголь - это язык, разработанный для ASCII-искусства. Выходные данные помещаются на холст, который печатается в конце программы.
Настроить
Получить ввод и рассчитать символы лица:
Нарисуй тыкву
После этого цикла мы имеем
Следующий:
Результат:
Нарисуй лицо
Мы нарисуем лицо, смотрящее вправо, и изменим его позже, если это необходимо.
Результат (для ввода
31
):Подумайте, если это Хэллоуин:
Окончательный вывод:
источник
Pyth - 84 байта
Ручное сжатие базы.
Тестовый пакет .
источник
PHP,
178176171 байтможет сэкономить 5 байт с помощью физических разрывов строк. Беги с
-r
.источник
V , 97 байт
Попробуйте онлайн!
Я разочарован тем, как долго это получилось. Это более запутанно, чем обычно, поскольку V едва справляется с числами, много байтов получается при создании условных условных выражений. Я бы опубликовал подробное объяснение, но это заняло много времени, так что я мог бы обойти его позже. Вот hexdump:
К вашему сведению, это будет происходить очень медленно. Это займет около 10 секунд. Я знаю, почему это происходит, и я смотрю на исправления.
источник
Pyth, 76 байт
Попробуйте онлайн.
Не использует сжатие. (Я пытался использовать некоторые из них для версии строки данных лица, но она оказалась такой же длины.)
источник
Java 7, 237 байт
Ungolfed & тестовый код:
Попробуй это здесь.
Выход:
источник
C ++,
222204194 байта-18 байтов благодаря Кевину Круйссену и -10 байтов за явную верхнюю часть
Ungolfed
источник
&&
чтобы&
и||
к|
? Таким образом,using S=std::string;S f(int n){char L[80],o=2*(n>30),i=-1;while(i++<80)L[i]=47<i&i<53?88:i%2?'|':i==20|i==24|i==36?n<32|i>35?94:'o':i-o%14?i-o<55?32:95:10;S t(5,95);return' '+t+'I'+t+' '+S(L+o,L+70+o);}
( 202 байта ) компилируется и запускается?i-o
Обязательна толькоPHP, 222 байта
Выход
источник
Groovy Script,
273265216202198 байтНеуправляемая версия
Попробуй здесь
редактировать
Как уже упоминал Тит, я могу сохранить некоторый размер
i < 32
вместоi in 1..31
Редактировать 2
Убраны все возможные пробелы вокруг операторов ... Забыл сделать это в начале
Редактировать 3
Переписаны троичные условия для использования сохраненной переменной, заменены
;
символами новой строки, удалено явное определение переменнойРедактировать 4
Как уже упоминалось Otávio, я могу сэкономить еще 4 байта , если я перейти от
| |${j ? ' |^| | ' : ' | |^| '}| |
к| | |${j ? '^| ' : ' |^'}| | |
источник
i < 32
вместоi in 1..31
?;
обеими символами длиной в 1 символ, я бы предложил для удобства чтения новую строку. И отказаться от хороших привычек кодирования, избавиться от нихint
иdef
.print
1-й троичной форме сохраните условие в переменной as(j=i>30)
, затем в следующих 2 используйте толькоj
вместо того, чтобы повторять то жеi>30
условие.JavaScript (ES6),
163125 байтТеперь беззастенчиво воровал трюк @ ETHproduction для позиционирования лица. Кодировка:
0
это глаз1
и2
зубы,3
это левая сторона,4
это правая сторона и5
переносица.источник
Рубин, 168 байт
Вероятно, далеко от оптимального. Требуется
base64
иzlib
библиотеки.Вызов как лямбда-функция.
источник
Python 2, 167 байт
источник
C # 6,
223215 байтint d=int.Parse(args[0]);var x="| | |\n| |";var s=d<31?" |^| |^| |\n| | | |^"+x+" |VvVvV":(d==31?"^| |^"+x+" |^| "+x+"VvVvV| ":"o| |o"+x+" |^| "+x+"XXXXX| ");Write(" _____I_____\n| | | | "+x+s+"| |\n|_|_|_|_|_|_|");
Вся программа разглажена:
источник
Func<int, string>
что обычно является самым коротким способом сделать это.Write
вместо того, чтобы объявлять и определятьs
.\r\n
вместо всего этого\n
?