Привет, мир!!! Распределение Фибоначчи


21
  1. Ваша программа должна выводить точно: Hello world!!!с или без перевода строки после.
  2. Ваша программа не должна принимать никаких данных.
  3. Распределение символов исходного кода должно быть правильным в соответствии с:
    • Количество числовых символов (0-9) должно быть ровно одним порядковым номером Фибоначчи.
    • Число других нечисловых символов ! (0-9) в исходном коде должно быть точно таким же порядковым номером Фибоначчи, что и вышеупомянутый порядковый номер Фибоначчи.

Четыре примера правильного распределения символов в исходном коде:

  • 13 числовых, 8 нечисловых символов.
  • 34 числовых, 21 нечисловых символов.
  • 55 числовых, 34 нечисловых символа.
  • 89 числовых, 55 нечисловых символов.

Это код-гольф, выигрывает самый короткий код в байтах! Удачи!

Изменить: Поскольку этот вопрос имеет ограничения по размеру исходного кода в сочетании с игрой в кодекс, принятым ответом (если более одной доли имеют одинаковую длину выигрышных символов) будет ответ с большинством голосов (и наименьшим количеством символов): 2014- 03-01.


6
Таким образом, все решения имеют количество символов, которое является числом Фибоначчи.
Говард

1
Вот программа для проверки ответов (вставьте код в поле ввода.)
Джастин

1
Возможно ли сделать это менее чем за 55 символов? Требуемый вывод имеет 14 символов, и я не могу придумать язык, который может использовать числа для вывода символов без использования хотя бы одного символа на символ.
Джастин

2
@Plarsen определенно не в порядке
Джон Дворак

1
Хорошо, тогда я не буду менять правила :)
Plarsen

Ответы:


27

Командная строка Windows - 34, 8 , 5 символов, (2 ниже)

* Эти могут или не могут нарушать правило 2, но здесь это в любом случае

%~099

Назовите файл:

&start call echo Hello world!!!&exit -b .cmd


Теперь давайте немного повредим файловую систему - 2 символа (или меньше, если хотите)

A1

Назовите файл (используя предпочитаемый вами неортодоксальный метод):

"&start call echo Hello world!!!&exit&.cmd

Как это работает:

Поскольку сценарии cmd вызываются с помощью «cmd.exe / C«% 1 »% *», выполняемая команда будет выглядеть так:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

который будет в следующем порядке:

  • Не удалось выполнить «c: \ PATH_TO_THE_SCRIPT \»
  • Откройте новую оболочку печати Hello world! \ N
  • Выход из оригинальной оболочки

2
Вот Это Да! Я думаю, что у нас был победитель, если бы в правилах не было никаких комментариев. +1 в любом случае для нестандартного мышления.
Пларсен

2
Код гольф с Windows CMD ... +1. Кроме того, можно утверждать, что «отсутствие ввода» могло означать «отсутствие чтения STDIN»: P
Камило Мартин

1
Это интересный трюк и для других гольф-кодов ... напишите настоящий код в имени файла и используйте что-то вроде eval $0его выполнения <rolleyes>
Tobia

1
Это невозможно!! 5 символов? Действительно интересный подход
Пларсен

1
Фактически, я только что опубликовал решение с двумя символами ниже.
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Это выражение MySQL, которое оценивается при Hello world!!!условии, что sql_modeпараметр включает в себя PIPES_AS_CONCAT. Он содержит ровно 21 цифру и 13 не цифр.

Будь это квалифицированная запись, я оставляю это на усмотрение жюри.

пример

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
Что за ... CMD и SQL-выигрышный код для гольфа ??
Камило Мартин

selectИ ;, возможно , являются частью заявления, но все - таки умное решение.
Прим

@ Примо они, поэтому я не уверен, что это соответствует. Но я думал, что выложу это для веселья ;-)
Tobia


11

GolfScript, 55 символов

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

Не удалось найти решение из 34 символов, поэтому я создал это.


10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

Решил сделать это с новой строки, так как это ничего не стоит. Числа являются сцепленными значениями последовательности Фибоначчи.


8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

Да. Я трачу их цифры. Что ты собираешься делать с этим?


Кто бы мог подумать, что пи ~ 3 будет таким полезным!
Кайл Канос

1
На вопрос написано 21 нечисловое плюс 34 числовое, ваш ответ 34 нечисловых плюс 21 числовое.
user12205

1
«Привет, мир» должен быть «Привет, мир»; то есть заглавные буквы ч.
Джастин

7

C (89 символов)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

Хотя приведенное выше действительно, но, к сожалению, мои усилия по его сжатию с помощью следующей программы не соответствуют спецификации. Я чувствую, что стоит посмотреть, и, возможно, кто-то еще может немного сократить его (64 символа, 37 цифр, 27 не цифр). Чтобы скомпилировать его, вам придется использовать clang и with -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}

Составные литералы - это название того, что вы ищете. Я пытаюсь использовать их, чтобы уменьшить число символов до 21!
charmlessCoin

Самое низкое нечисловое число, которое я могу достичь - 26, сделав iглобальным (опуская int). Использование longможет сохранить запятые, но стоит дороже. 21 очень далеко.
Угорен

Да, это много потерянного пространства. Используя этот маленький трюк, я могу это понять, main(){puts((int[]){1819043144,1870078063,560229490,8481});}но это все еще 60 символов. Если бы я мог исключить еще несколько ... Редактировать: вау, так что глобальные переменные не должны иметь декларацию? Кто знал?
vmrob

@vmrob, у глобалов должна быть декларация. Но тип по умолчанию равен int, поэтому a;эквивалентен int a;.
Угорен

@ugoren Я знал, что у них должна быть декларация, я просто не знал, что по умолчанию это int!
vmrob

6

Windows PowerShell (вероятно, также Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

Вы ничего не сказали о доступе к сети, поэтому вот грязное решение. У меня есть URL bit.ly с достаточным количеством букв со второй попытки. К сожалению, это все еще 21 цифра, нуждающаяся в 34 цифрах, которые будут использоваться или потрачены впустую.


Вы знаете, что можете редактировать ссылки на bit.ly, верно?
Timtech

Что вы имеете в виду, редактировать? Кроме того, я не получил бы это под 13 письмами в любом случае.
Джон Дворак

Вы можете нажать карандаш рядом с «Копировать» и отредактировать ссылку. Если вы это сделаете, все старые версии будут работать.
Timtech

1
Укорочено до 34! curl 37.187.42.18/?hw=112358132134
Дом Гастингс



5

Баш, 2 символа

Очень хорошо, в том маловероятном случае ответ Роберта не дисквалифицирован, вот мой:

$0

Назовите файл echo Hello world!!!и выполните с sh.


5

питон

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

цифры: 55 не цифры: 34


Обратите внимание, что в решении нет комментариев. только код.
Елисей

4

PHP (55 байт)

Эта программа использует двоичный файл (вау, я уже третий раз использую тот же трюк). 21 нечисловых символов, 34 числовых символа. Букв нет, потому что буквы скучные.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@JanDvorak: я почти уверен, что прочитал «до или после». Ну что ж, позвольте мне исправить это тогда.
Конрад Боровски


4

Скриптинг (34 символа)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

К сожалению, Sclipting вообще не использует символы ASCII, поэтому я должен добавить в программу 21 бесполезный номер :(


2

Forth or Ruby, 55

(34 числовых + 21 нечисловых)

вперед

." Hello world!!!" \ 3141592653589793238462643383279502

Рубин

puts"Hello world!!!"#3141592653589793238462643383279502

Использование комментариев на панели кажется грязным, но это правильные ответы.


2

J (55 символов)

(34 числовых + 21 нечисловых)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.

0

C #, 233 байта

233 символа
144 цифровых
89 нечисловых символов

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

Выходы:

Hello world!!!

0

Japt , 55 байт

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Попробуйте онлайн!

Это в основном простой привет мир с некоторым мусором в начале, который игнорируется, но заставляет код удовлетворять условиям.


-1

Пакет Windows

echo Hello World!!!::0123456789012345678901234567890123

12
Вау. Это так сильно отличается от моего решения.
user12205

-3

http://esolangs.org/wiki/Hello%2B%2B

h000000000051090942171709440034

h печатает привет, а остальное просто цифры


Это не распространяется в соответствии с Фибоначчи, а также, выход не совсем точноHello world!!!
Timtech
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.