Привіт Світ!!! Розподіл Фібоначчі


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

Чотири приклади дійсного розподілу символів у вихідному коді:

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

Це код-гольф, найкоротший код в байтах виграє! Удачі!

Редагувати: Оскільки це запитання має обмеження щодо розміру вихідного коду у поєднанні з тим, що це код-гольф, прийнятою відповіддю (якщо більше однієї спільної дорівнює довжині виграшного символу) буде відповідь з більшістю голосів (і найменшим числом символів): 2014- 03-01.


6
Таким чином, усі рішення мають кількість символів, яка є числом волів.
— Говард


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 у будь-якому випадку для зовнішнього мислення.
— Plarsen

2
Код гольфу з Windows CMD ... +1. Крім того, можна стверджувати, що "відсутність введення" могло означати "не читати STDIN": P
— Camilo Martin

1
Це цікавий трюк і для інших гольфів з кодом… Напишіть справжній код у назві файлу та скористайтеся чимось на зразок eval $0його виконання <rolleyes>
— Tobia

1
Це неможливо!! 5 символів? Дійсно цікавий підхід
— Plarsen

1
Насправді, я щойно опублікував 2-річне рішення.
— Тобія

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І ;, можливо , є частиною заяви, але все - таки розумне рішення.
— прим

@primo, вони є, тому я не впевнений, чи відповідає це. Але я подумав, що опублікую це для веселості ;-)
— Тобія


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

Пітон 34-55

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

Так. Я витрачаю їх цифри. Що ти з цим зробиш?


Хто знав, що пі ~ 3 буде дуже корисним!
— Кайл Канос

1
У запитанні сказано 21 нечисловий плюс 34 числовий, ваша відповідь - 34 нечисловий плюс 21 числовий.
— користувач12205

1
"привіт світ" повинен бути "Привіт світ"; тобто з великої літери h.
— Джастін

7

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

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

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

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

Складні літерали - це назва того, що ви шукаєте. Я намагаюся використовувати їх, щоб звести це до 21 символу зараз!
— charmlessCoin

Найменший нечисловий підрахунок, який я можу досягти, - це 26, роблячи iглобальний (опускаючи int). Використання longможе зекономити коми, але коштує дорожче. 21 дуже далеко.
— ugoren

Так, це багато витраченого місця. Використовуючи цей маленький трюк, я можу домогтися його, main(){puts((int[]){1819043144,1870078063,560229490,8481});}але це все ще 60 символів. Якби я міг усунути ще декілька ... Редагувати: ух, так що глобалісти не повинні мати декларацію? Хто знав?
— vmrob

@vmrob, глобальні особи повинні мати декларацію. Але тип за замовчуванням до int, так a;це еквівалентно int a;.
— ugoren

@ugoren Я знав, що вони повинні мати декларацію, я просто не розумів, що це дефолт для int!
— vmrob

6

Windows PowerShell (можливо, також Bash), 55

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

Ви нічого не сказали про доступ до мережі, тому ось брудне рішення. Я отримав URL-адресу bit.ly з малою кількістю букв у другій спробі. На жаль, це все ще 21 нецифровий номер, для використання або марнування 34 цифр потрібно 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

Математика 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

Вихідні дані

Hello World!!!

4

Сліптінг (34 символи)

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

На жаль, Sclipting взагалі не використовує жодних символів ASCII, тому мені доводиться прошивати програму 21 непотрібними символами :(


2

Четверта або Рубі, 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!!!



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.