Введение
Плохие новости, ребята - вас задержали. Ваш учитель английского не понимает этот сайт и хочет, чтобы вы "перестали заниматься математикой на своих цифровых док-клавишах, это урок английского!"
Она приговорила вас написать свою любимую поговорку на доске 25 раз, что даст 100 строк на доске.
The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
К счастью для вас, вы заядлый читатель (не говоря уже об эксперте-гольфисте)! У вас есть информация о трюке, который может вас легко отвлечь.
(Фокстрот Билла Аменда)
К сожалению для Джейсона, это не сработало. Но у тебя есть идея получше! Так как ваш учитель английского думает, что вы занимаетесь математикой, если вы пропустите все цифры из вашей программы, это может сработать! Вы также хотите, чтобы ваша программа была максимально короткой, потому что вы ленивый ученик и не хотите много писать на доске.
Напишите программу, которая соответствует следующим правилам:
- Ваша программа должна напечатать 4 строки выше 25 раз. Строки должны быть выведены в том порядке, повторяя. Итого ровно 100 строк вывода (завершающий перевод новой строки в самом конце или ведущий перевод новой строки в порядке).
- Вы не можете использовать символы
0123456789
. Ваш учитель запутается в математике и вызовет вас! - Вы можете использовать любой импорт и внешние библиотеки без учета импорта. Ваш учитель английского языка не знает о программировании. Джейсон мог бы сэкономить много работы, если бы не писал,
#include <stdio.h>
и ты не хочешь повторять его ошибки! - Оценка вашей программы по
byte
счету. Самый низкий балл побеждает!
Ответы:
CJam,
109107106104103 байтВыше приведен обратимый дамп xxd.
тестирование
Вы можете сгенерировать и выполнить приведенный выше код, запустив его в онлайн-интерпретаторе :
Чтобы увидеть сгенерированный код (без его выполнения), удалите финал
~
.Для подсчета количества байтов (один символ - один байт в ISO-8859-1) замените последний
~
на a,
.Версия для печати (122 байта)
После нажатия на строку (S) выполняется следующее:
Моар гольф
После нажатия непечатаемой строки (U) выполняется следующее:
Это выдвигает строку версии для печати. Остальная часть кода работает как прежде.
источник
~
на,
для подтверждения.]:+~
его, он работает. Почему бы вам просто не добавить это в свой код?JavaScript (ES6) 164
Проверьте в консоли FireFox / FireBug.
источник
Питон:
188 173 160153Я не сильно питон, но мне это кажется довольно коротким.
Редактировать: Так что я был неправ, это было совсем не коротко! Спасибо за помощь в комментариях: D
источник
\
в\n
результате утечки ...b
вprint
:%
имеет более высокий приоритет, чем*
.CJam,
151 140 135 132 130128 байтов (Tweetable)Попробуй здесь
Я могу сократить это до 110 байтов, преобразовав это в Unicode, но так как это не побеждает другое решение Unicode, я бы предпочел не ставить это :)
источник
:D
смайлик там делает ?! Вы пишете своим друзьям во время задержания? Иди в кабинет директора!T
псевдоним для.\nThe
, а затем удалить дополнительную строку, которую это производит из начала выходной строки (мой cjam-fu не достаточно хорош, чтобы выяснить, можете ли вы легко это сделать)PHP, 0 байт
Чтобы запустить этот код, вы должны импортировать библиотеку, которая называется
data://text/plain,<?php...classroom.\n";
так:И вы должны были
allow_url_include
включить в свойphp.ini
.Нет больше номеров или расширений, благодаря Деннису.
источник
require_once "data://text/plain,The eighteen-hundreds...";
, который не требует sh , не использует цифры и по-прежнему равен 0 байтов.Рубин,
185180176 байтРЕДАКТИРОВАТЬ: интерполяция строк, спасибо @britishtea
Это мой первый в мире гольф, и я не очень люблю Rubist (но я, безусловно, люблю Ruby). Во всяком случае, это оно (сокращенно, предложение Doorknob).
источник
s.split.size.next
сохраняет 5 символов (вам не нужно указывать место для разделения).(s.split.size+1).times
бы на 1 байт короче?Ява
249231230222Мой первый ответ! Почему бы не начать с языка, который я так хорошо знаю.
Ungolfed
источник
public
своего класса и сократитьargs
до одного персонажа. Вы также можете сделать этоa++<':'
вместо того, чтобы увеличивать его отдельно. Так как OP не учитывает импорт, вы можете сэкономить немного большеimport static java.lang.System.*;
, тогда вам не нужно писатьSystem.
позже (там, где это важно). Сделав это, я получил около 230. Возможно, вы захотите взглянуть на страницу советов по Java, если вы еще этого не сделали.С 171
Сначала я попробовал упрощенную версию (189 байт), которая была лучше, чем другое решение C ...
который я позже немного оптимизировал ...
источник
char *
.a
видимому, потому что он по умолчаниюint
, который может приниматьchar
значение. Это не нравится,b
если я не назову этоchar[]
все же. VX, какой компилятор вы используете?b
этоint
тоже , но он держит указатель на строку буквальной. Это полностью нормально в GCC (у меня на моей машине 4.8.2).for(a='a';++a<'z';)
JavaScript, ES6,
174 172154 байтаИспользуя
replace
трюк @ edc65 . Спасибо!Работает только в последней версии Firefox (34 и выше) благодаря использованию шаблонных строк.
источник
BrainFuck ( 1597 символов )
Это все еще может быть дальше, если кому-то интересно.
Вы можете проверить это и подтвердить, что он дает правильный результат при соблюдении всех правил.
источник
Perl - 145
Я рад видеть так много ответов! Вот решение Perl.
источник
Так как она так ненавидит математику, почему бы не Mathematica (177)
источник
Javascript ES6,
198193 байтаВаш учитель не хочет никаких чисел, но, поскольку они учитель английского языка, они понятия не имеют, что
Math.floor(Math.exp(Math.PI)+Math.E)
значит.Более читабельно:
Должен быть запущен в последнем Firefox
источник
with(Math)alert("long string here".repeat(exp(PI)+E|[]))
(q='aaaaa'.length)*q
"\x18".charCodeAt()
! (закодируйте стрелку вверх, и вы сэкономите тонну!)JavaScript -
178 байт,176 байтМой первый гольф, думал, что я попробую его с немного крутыми операторами, получился не так, как хотелось бы, но да ладно!
Так как я уже в заключении, и, очевидно, у меня проблемы с поведением себя ... Javascript - 71 байт
Это, вероятно, доставит мне более серьезные неприятности, но, если я уже оказался в заключении, и я планирую обманывать свое задержание, очевидно, у меня нет здравого смысла в том, как я должен вести себя в классе. Возможно, если я смогу натянуть одну на своего учителя, я смогу натянуть одну на всех других игроков в гольф там.
Быстрый! Пользователи Chrome / IE 11 / Firebug, откройте свои консоли ПРЯМО СЕЙЧАС и попробуйте.
(Пожалуйста, не делай мне больно, я подумал, что это смешно)
источник
C # -
229216 байтБесплатный
using
FTW!Альтернатива, тот же счетчик байтов (
using
однако, больше злоупотреблений)источник
a
':'-'!'
== 25), которое корочеa.Length
, и позволит включить его, как вы предлагаете. (Альтернативно, делайте так, как кажется другим ответам, и просто переходите между!
и:
, забавно, как мы все выбрали одни и те же символы)Befunge-93,
268260256 (размер сетки: 72x6 = 432)Это мой первый опыт игры в гольф, поэтому я решил попробовать язык, который еще не решен для этой проблемы, так как в противном случае я бы ничего не добавил. Поскольку он совместим с Befunge-93 (вписывается в сетку 80x25 и использует только инструкции Befunge-93), он должен работать и в Befunge-98. На всякий случай, я также избежал, чтобы указатель передавался через любые символы без инструкций, кроме пробела. Я не мог вспомнить, определяла ли спецификация эти символы как no-ops, и у меня не будет носовых демонов в МОЕМ коде.
Вы не можете действительно раскрутить код Befunge. Здесь следует отметить, что Befunge помещает символы в стек как их значения ASCII, что позволяет относительно просто ссылаться на числа без буквальной ссылки на них. Значение
"K"
в верхнем левом углу равно 75, что означает количество повторений, умноженное на количество предложений «за» на повторение; Я использую модуль и некоторые другие хитрости (копии) этого числа, чтобы определить, какой путь пройти через печать на каждом уходе.::-
хорошая идиома для нуля, полезная для строк с нулем в конце; Я использую это дважды здесь.Иногда указатель должен проходить через место, где я определяю строку, следовательно, определенный выбор символов используется для получения определенных чисел в некоторых точках.
Приятной особенностью многих интерпретаторов Befunge является то, что вы можете наблюдать за стрелкой указателя по сетке, а также видеть, какие значения находятся в стеке. Таким образом, вы можете пройти и посмотреть, как программа работает самостоятельно, более или менее! Я бы порекомендовал использовать http://befungius.aurlien.net/, если у вас нет своего предпочтительного переводчика Befunge.
Это, вероятно, можно уменьшить (или намного) больше. Пожалуйста, дайте мне отзыв! Если мне нужно дать лучшее объяснение, кто-нибудь, дайте мне знать; Я новичок в этом.
Редактировать - сбрить несколько байтов, избавившись от ненужного перенаправления на последнюю строку, когда программа завершается (просто помещая
@
туда, где^
раньше было).Еще одна правка - сбрил еще несколько байтов в разных местах, в основном с помощью хитрости. (Также добавлен размер сетки, как кажется, тенденция с ответами Befunge.)
источник
re a time
где-нибудь?#
на одном конце строки для пропуска символ на другом конце ( например, в CCBI#
просто пропускает бесконечное пространство между ним и символом на другом конце), что нарушает эту программу. Я не удосужился вернуться и исправить это представление с учетом этого.1
цифр, которые не разрешеныPyth 135
136 140Обратите внимание на завершающий пробел.
Использует почти тот же трюк, что и @Geobits и его друзья-комментаторы в ответе Python для построения строки. Теперь также использует некоторые из этого ответа .
При этом используется встроенная переменная
G
, которая содержитabcdefghijklmnopqrstuvwxyz
и получает на единицу меньше своей длины для получения 25 выходных данных.источник
Рубин -
152141http://repl.it/2Om/6
источник
String#*
для повторения строк 25 раз вместоInteger#times
.puts"hi"
допустим).Python, 165 байт
Очень хорошо получилось, что длина h равна 25, что не было преднамеренным. знак равно
источник
Python 2 - 143
Глупый ответ:
Обратите внимание, что полный счет равен 162. Я пропустил все
from this import i
.Использует аналогичные замены для моей стратегии Pyth, но я не удержался от публикации этого после обнаружения веселости импорта из этого :)
источник
from this import i
! Как вы узнали об этом?import this
. Тогда я подумал: «Что еще может быть вthis
модуле?» Я позвонилdir(this)
. И вот, вместе со словарем, искаженной строкой и"!"
переменной, здесь была числовая константа ..., равная 25.PHP (
175157156 байт; 152 с Unix EOF):Не самое удачное решение, но, безусловно, делает свою работу и меньше, чем некоторые попытки.
Вот код:
Старая версия:
Это работает, потому что php циклически изменяет символы, и мы просто проверяем, нет ли это,
z
и останавливаемся.(Любопытно, что когда php достигает
z
, он переходит кaa
.)источник
Python 2 - 155
Примечание: поскольку управляющие символы не отображаются на SE, я заменил его на
\x19
.Версия Base 64:
источник
from string import *
или как бы он ни вызывался в Python[]
скобки в первой строке, которая неявно создает кортеж, а затем распаковывает его.ord('d')//len('aaaa') to before the string so you don't have to bracket it.
LiveScript - 181
Требуемый импорт:
Если вы хотите запустить его под Node.js, установите
LiveScript
( неlivescript
) иprelude-ls
пакеты из npm, заменитеalert
наconsole.log
и запуститеlsc prog.ls
, гдеprog.ls
находится программа.источник
0123456789
»T-SQL: 206
Использует перекрестное соединение в пяти строках для генерации 25 строк, выбирающих фразу. Разрывы строк важны для вывода.
источник
Баш, 151 байт
Прямой порт вашего собственного ответа
источник
С, 196 символов
Это не легкая задача для доброго старика. Использование шаблона «% steen-сотни ...» спасает мне целых два символа.
Пробелы для наглядности включают не в счет.
источник
Рубин, 145
объяснение
String#upto
для печати строк 25 раз. Диапазон"K".."c"
составляет 25 символов.источник
#{a="The "}
на самом деле стоит вам больше персонажей!#{a}
такой же длины, как иThe
Ракетка 173
Ungolfed:
источник
C
215203199 байтовUngolfed
Я использовал сдвиг битов для итерации без какого-либо числа.
a<<='\xC'+'\xD'
устанавливает значение 0b1 [25 нулей]a>>=!!a
сдвиг вправо на один бит каждый раз, когда мы повторяем циклEdit:
a
равно argc, поэтому его значение уже равно 1, когда программа запускается без аргументов. Измененоa>>='\xB'-'\xA'
наa>>=!!'\xA'
4 байта короче. Также текст отображался только 24 раза. Починил это. Убраны лишние скобки вwhile
.Изменить 2: изменено
!!'\xA'
на!!a
. Кажется, работает и сохраняет 4 байтаисточник
puts
чтобы сохранить больше байтов.Rant, 191 байт
Не самое короткое решение, но все равно круто. Я написал подпрограмму для написания первых трех строк и спроектировал ее так, чтобы ее вызов с пустым аргументом возвращал строку длиной 25 символов. Затем я передаю его длину ретранслятору.
Ungolfed:
Попробуйте онлайн
источник