Ваша мета : написати фрагмент коду, який призведе до класичного результату "Привіт, світ!" друкується в STDOUT або еквівалент.
Правила : Код повинен бути повністю в друкуванні ASCII. Весь код повинен бути функціональним - видалення будь-якого символу підрахунку повинно змінити результат або призвести до того, що код не функціонує. Усі змінні повинні бути використані після призначення. Для виводу повинні бути необхідні символи та рядкові літерали - тобто заміна будь-якого символу чи будь-якого символу в рядковому літералі іншим символом повинна бути здатна змінювати результат (а не через ефект послідовності втечі - замінювати символ зворотною косою рисою або еквівалент)
(ПРИМІТКА. Остаточне правило відредаговано в)
Оцінка балів : саме тут стає цікаво. Найвищий бал виграється залежно від кількості символів відповідно до типових правил боулінгу коду. Але багаторазове використання символів призведе до бальних відрахувань. Зокрема ...
- Повторне використання будь-якого буквено-цифрового символу (az, AZ, 0-9) призведе до вирахування 3 балів за повтор (перше використання не призводить до відрахування).
- Повторне використання основних пунктуацій ([!? .-, ": ';]) - включаючи дужки - призведе до вирахування 2 балів за повтор.
- Повторне використання інших символів ASCII {`~ @ # $% ^ & * _ + = | \ /> <} - включаючи фігурні дужки - призведе до вирахування 4 балів за повтор.
- Повторне використання пробілів, вкладок та нових рядків призведе до вирахування 1 бала за повтор. Тобто, лише перше використання пробілу, вкладки чи нового рядка зараховуватиметься до загальної суми.
Примітка: коментарі не зараховуються до загальної кількості, хоча символи, що позначають початок / кінець коментаря, є. Наприклад, у C / C ++, якщо у вас є /* This is a comment */
, то він буде рахувати два косих риски і дві зірочки, але між ними нічого.
Деякі приклади (примітка: використання Джулії як зразкової мови) ...
print("Hello, world!");
Всього видимих символів: 22
Містить пробіл: +1
Повторна буквено-цифрова цифра: -12 для лілових кольорів
Повторна пунктуація: -2 для "
Кінцевий бал: 22 + 1-12-2 = 9
print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII
Всього символів: 43 (не рахує жодних символів після #, що є символом коментаря)
Містить пробіл: +1
Повторне буквено-цифрове значення: -18 для rr1008
Повторний розділовий знак: -24 для () "" "" ,,,,,
Фінал оцінка: 43 + 1-24-18 = 2
xy=STDOUT
m="Hello, world!"
print(xy,m);
Усього видимих символів: 37
Містить новий рядок: +1
Містить пробіл: +1
Повторне буквено-цифрове значення: -18 для ксилору
Повторний розділовий знак: -4 для ",
Повторне інше ASCII: -4 для =
Остаточний бал: 37 + 1 + 1-18-4 -4 = 13
Кілька недійсних фрагментів коду ...
x=2;print("Hello,world!")
Проблема: x
призначається, але не використовується.
print("Hello,"*" world!")
Проблема: *
непотрібна, результат буде без неї однаковим.
k=1
if k>0
print("Hello, world!")
else
print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end
Проблема: Друга print
команда не запуститься. Крім того, видалення символів у цитаті у другій print
команді не змінить вихід.
x="Hello, world!";
print(x)
Проблема: видалення нового рядка не змінить результат або не спричинить помилку (у Джулії крапка з комою необхідна лише у тому випадку, якщо в одному рядку є кілька команд, інакше просто придушує повернене значення).
print("Hellos\b, world!")
Проблема: s
характер не впливає на результат, оскільки він стирається \b
. Це прийнятно, якщо це робиться за допомогою коду ( "Hello",char(100),"\b, world!"
), але не може бути здійснено за допомогою рядкових літералів або символів.
Зручний калькулятор оцінок - http://jsfiddle.net/4t7qG/2/ - завдяки Doorknob