Как можно меньше символов Юникода выведите следующее (144 символа):
1, 2, 3 o'clock, 4 o'clock rock,
5, 6, 7 o'clock, 8 o'clock rock,
9, 10, 11 o'clock, 12 o'clock rock,
We're gonna rock around the clock tonight.
Вы не должны использовать никакие цифры в вашем коде, кроме цифры 1
.
11
. Означает ли инструкция, что вы можете использовать только цифру 1 или цифру 1?1
. Я не уточнил, сколько раз, так что тот факт, что люди использовали,11
является хитрой лазейкой, и я за это.Ответы:
Javascript -
140132Тот факт, что 11 состоит из двух единиц, позволяет мне принять правила, которые я предполагаю.
объяснение
K +++ s равно (k ++) + s, поэтому он сначала добавляет k к x, затем увеличивает k, а затем добавляет s к x. Этот процесс будет выполнен три раза, прежде чем он добавит последнее предложение.
источник
k+++s
? Это(k++) + s
илиk + (++s)
или(k++) + (++s)
?x+=k+++s+k+++s+k+++t+s+k+++t+u
alert
меньше, чемconsole.log
. Использование автоматического отображения последнего вычисления в консоли похоже на читерство.C # - 186
Лучший язык гольфа или лучший язык гольфа?
источник
i++ +
битахWriteLine
->Write
и используя литерал\n
в конце строки.Brainfuck (1574)
Не серьезное подчинение, но следует правилам.
Можно проверить здесь .
источник
#RESPECT
Рубин, 100
источник
s="%i, %i#{", %i o'clock"*-~1} rock,\n"
(замените\n
их буквальным переводом строки). Отличная идея для использования$$
!r=-~1
inline, вы можете использовать"..."*-~r
вместоs+s+s
, позволяя вам оставить назначениеs
.Perl 123
Регулярное выражение соответствует
(
,)
и*
. Я использовал тот факт, что ASCII-код(
равен 40, из)
41 и*
42.r
Флаг регулярного выражения позволяет «на месте замещения» иe
флаг позволяет оценить код (подобныйx.replace(/.../, function(m){...})
в JavaScript).(clock,rock)
это массив из двух "голых слов".$&
текущее совпадение регулярного выражения иord$&
значение ASCII.Маскированы 3 или
1+1+1
значения ASCII теперь 0, 1 и 2, поэтому я могу использовать их для получения соответствующего элемента массива. Поскольку 2 находится вне массива, оператор «короткого замыкания» выполняет||
оценку++$i
. В первом матче$i
будетundef
так приращением его я получаю 1, то 2 и так далее ...Простыми словами. Это заменяет
*
его текущее вхождение,(
на «часы» и)
«рок».источник
Bash + coreutils, 120 ASCII, 92 Unicode
ASCII:
Unicode:
Версия Unicode в кодировке base64 (в случае, если визуализация Unicode испортилась):
источник
eval
стати использовать вместо конвейераbash
илиsh
?$r
с!Brainfuck, 1299
Блюууург . Это было ужасно Я не знаю, почему я это сделал, с самого начала это казалось довольно простым делом. Первый и, вероятно, последний сценарий Brainfuck. Попробуй это здесь.
С некоторой помощью автоматического генератора кода я смог написать скрипт, который использовал большинство символов вместо генерации каждого с нуля. Это всего на 275 символов короче автоматически сгенерированного здесь .
Вывод не завершен новой строкой.
Я мог бы добавить немного объяснений позже. По сути, любая длинная строка, которая не является чем-то вроде
>>>>>>>
или<<<<<<<
или>>.>>.>>.>>.
генерирует персонажа или серию из них.источник
Луа -
217164154151149143Модифицировал старый, чтобы вместо него использовать цикл, сохраняя загрузку символов. Спасибо TeunPronk за помощь в бритье еще 10 персонажей и WilliamBarbosa за то, что они сбрили еще 3 персонажа. Еще 2 символа могут быть сохранены с помощью переменной
k
. Еще 6 символов сохраняются путем исключения переменной,r=" rock,"
поскольку она используется один раз.Ungolfed,
источник
j
иk
.O
, удалитеO
изR
поместите пространствоR
и заменитьR
наO,R
вашейio.write
:)io.write
в переменной (f=io.write
) и уменьшать ее еще большеCJam - 90 ASCII / 54 Unicode
ASCII:
Unicode:
Попробуйте их на http://cjam.aditsu.net/
источник
Python (123)
PYG (112)
источник
Brainfuck - 680
проверьте это здесь: ideone.com/Wi9ftB
как я и обещал, вот лучшая версия. мой мозг чувствует себя как ... о, вот откуда это название.
объяснение: (потому что это не поддерживаемо, и я не хочу забывать, как это работает)
Во-первых, вы должны выбрать лучший макет данных для этой задачи. я придумал
-4 outmost loop -3 newline char -2 space -1 numbers 1 lowercase #1 2 lowercase #2 3 comma, apostrophe, period 4 condition (outmost loop < 3) 5 inner loop 6 second inner loop
Мы должны верить, что это оптимально, если не будет слишком много смен (в этом случае вы должны изменить расположение)
После этого я использовал цикл 4x9x3, чтобы установить начальные значения для новой строки, числа, двух строчных букв и запятой. (все меньшие коды ascii получили 4x9 = 36, а две строчные буквы получили 4x9x3 = 108, затем я добавил и вычел некоторые из них, чтобы получить их реальное значение)
Когда предварительная настройка завершена, код входит в самый цикл, который повторяется 3 раза. Я объясняю это псевдокодом.
Когда этот раздел закончен, мне просто нужно напечатать последнюю строку. Но у нас есть заглавные буквы W, которые должны быть получены без использования слишком большого количества символов. На данный момент мы здесь:
поэтому я положил [-3] 4 раза в [-1] и вычел 3, чтобы получить 87 (W):
>[>>++++<<-]>>---.
затем сотри его
[-]
и перемести [-2] в это место [-1], чтобы пробел был близок к строчным буквам.
<[>+<-]
После этого он просто печатает буквы. строчная # 1 для нижней части 97-107 и строчная № 2 для вышеуказанной области.
источник
JavaScript,
111107 символов, без использования любого числа.Выполните эти фрагменты в консоли JS вашего браузера:
107 (вдохновлено http://xem.github.io/obfuscatweet/ плюс другой ответ JS):
111 (просто упаковав все нити и вывезя вокруг себя eval):
источник
C - 145 - попробуй меня
C - 172 - попробуй меня
источник
#include <stdio.h>
использоватьprintf
?main(){...
PHP - 125
129Версия 1 (129)
Версия 2 (125)
Чистая версия:
источник
Perl,
114111110108110:
111:
114:
источник
С ++
261203Отредактировал мою первую попытку; это сработало, когда я впервые проверил это, но это, кажется, случайность; постинкремент потока - это «неопределенное поведение», и он делал странные вещи (включая синий экран Windows 7!), когда я пытался перезапустить его. Я думаю, что использование printf вместо std :: cout может быть использовано с постинкрементом, чтобы получить более короткую программу.
Отредактировано снова, получилось 231 путем повторной реализации цикла. Отредактировано еще раз, теперь до 203 ... эти #defines не были все полезны в циклической версии.
Для тех, кто интересуется, как C ++ может запускать функцию «m», точка входа может быть определена как любая функция с опцией компилятора, так же как и все функции могут быть заданы как stdcall; Я использовал оба переключателя при компиляции выше. Если вам не нравится переопределенная точка входа, добавьте 3 к моему количеству символов.
источник
m()
. Однако вы можете сброситьvoid
и сохранить 5 символов (или 2, еслиmain
Свифт -
136134источник
Ява, 228
Твердо закодированное решение, вероятно, было бы короче.
источник
1+1+1
на 9 символов короче"two".length()"
. АString[] a
надо?Befunge-98 (
402268)Теперь unefunge!
источник
,,:,1+
,a11+/a*b1111+++-+w:,
бездомные символов под основную строку коды ... типичный Befunge. У большинства онлайн-переводчиков возникают проблемы с длиной строки (она слишком велика), знаете ли вы одну, которая не возражает?Groovy -
140139 символовГольф, под влиянием ответа Уильяма Барбоса :
Ungolfed:
источник
Mathematica - 153
источник
С ++ 252
источник
P(", ")
вместоQ
вас спасет 2 персонажа.N
иR
появляются только один раз: было бы лучше встроить их, чем сделать макрос.#include<iostream> #define P std::cout<<++i<< #define C" o'clock" #define F P", ";P", ";P C<<", ";P C<<" rock"<<std::endl; int i;main(){F F F std::cout<<"We're gonna rock around the clock tonight.";}
Java (v2) -
250241232 символаЭто полная программа бега, под влиянием ответа Уильяма Барбозы .
Golfed:
Ungolfed:
источник
ECMAScript6 -
136135Даже не использует разрешенную
1
цифру:Протестировано в консоли Firefox.
источник
PowerShell,
123118109После ужасного начала (167) я избавился от нескольких идиом, которые мне даже не нужны, и, по крайней мере, получил их короче, чем эталон.
источник
Haskell -
138137 символовВ качестве отдельной программы:
Редактировать: раньше у меня была вспомогательная функция o, используемая для определения
но оказывается, стоит 1 дополнительный символ. Есть ли способ сжать все "часы" / "рок" / "ока"?
источник
JavaScript, 140
Я делаю строку типа «х, х, х часов х рок, \ n ...» Затем я заменяю «х» на цифры.
источник
PHP 150
Никаких чисел, включая 11, которые не были бы двумя слипшимися, но числовое значение одиннадцать.
источник
PowerShell,
156140136129127Ungolfed:
источник
$i++,$i++,"$(($i++)) o'clock","$(($i++)) o'clock rock,"-join', '
цикла.Кобра - 193
источник