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


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.