Друкуйте рядки без обміну символами


15

Редагувати: Дозволено повторно використовувати пробіли.

Ваше завдання - написати n програм (або функцій, або тіл функцій, не використовуючи параметри чи назви функцій) однією мовою. До - й програма повинна вивести (кардинальний) число до в стандартній англійській мові в нижньому регістрі (з додатковим символом нової рядком). Отже, перша програма повинна виводити one, друга - виводити twoі т. Д. Для числа, що має дві частини, вони повинні бути розділені дефісом, схожим twenty-one.

Але жодна з двох програм, які ви подаєте, не може ділитися символами без пробілів або символами пробілу, виконуючи корисні роботи. Наприклад, якщо ваша перша програма просто "one", то жоден з " o nі eне може бути знову використаний в інших ваших програмах.

Ви можете використовувати символи пробілів (пробіли, нові рядки та вкладки) у двох чи більше програмах, якщо вони служать лише як роздільники або відступи та нічого не роблять самі. Таким чином, ви не можете використовувати їх повторно мовою Whitespace , і ви не можете використовувати їх у рядках у більш ніж одній програмі.

Можна використовувати лише символи, вкладки та нові рядки для друку (ASCII), що друкуються (включаючи CR та LF). Кожна програма повинна містити не менше 1 символу.

Ваш бал - це сума 1 / розмір програми ^ 1,5. Найвищий результат виграє. Ви можете використовувати цей фрагмент стека ( або цей код CJam ), щоб розрахувати свій рахунок:

function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>


Одним кращим правилом балів може бути сума 1 / (розмір програми + с) ^ 1,5, де c - константа. Але я думаю, що, мабуть, пізно це змінити.
jimmy23013

Чи можемо ми додати множник для отримання більшого числа кардиналів, оскільки це, здається, є метою? Мені дісталося дванадцять, вище за всі інші, але все ж програю.
mbomb007

@ mbomb007 Вибачте за те, що навмисно робили Headsecks нижчим балом. Але якщо Headsecks має аналогічну оцінку з іншими, я думаю, Glypho виграє занадто багато (не кажучи про Lenguage).
jimmy23013

Я хочу це зробити в
пробілі

1
@ mbomb007 Якщо я знову задаю подібне запитання, я, мабуть, додаю невелику константу до розмірів програми в балі. Але це занадто довільно, щоб змінити це питання.
jimmy23013

Відповіді:


6

gs2 , 0,38669200758867045

Видаліть пробіл з усіх цих програм, але три , це лише для (кашлю) читабельності. один і шість - це програми gs2, які виходять з ладу (за допомогою переповнення стека), що зручно робить їх ланцюжками .

один (3 байти)

one

два (1384 байти)

A?"A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000A?"A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000A?"A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000

три (92 байти)

0a 21 2c 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 2f 20 0a 21 28 3c 0a 21 2c 21 20 21 20
21 20 21 20 2f 20 0a 21 28 3c 45 21 20 21 20 21
2f 20 0a 21 28 3c 0a 21 2c 21 20 2f 20 0a 21 28
3c 0a 21 2c 21 20 2f 20 0a 21 28 3c

Багато значного пробілу, ось ось шістнадцятковий смітник. На початку він має символ однорядного подавання:


!,! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / 
!(<
!,! ! ! ! / 
!(<E! ! !/ 
!(<
!,! / 
!(<
!,! / 
!(<

чотири (276 байт)

f$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f
$f$31f$f$31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31Mf$f$f$31f$f$31f
$f$31f$f$31f$f$31f$f$31f$f$31f$f$31M

п'ять (178 байт)

hd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&
&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&K

шість (3 байти)

six

Я не бачив цієї вимоги - я перегляну і виправляю проміжні рішення.
Лінн

Я отримую використовувати 20через 7E, 09(вкладка), 0A(LF), і 0D(CR), НЕ так?
Лінн

Так. Відредаговано, щоб дозволити CR явно.
jimmy23013

1У п'яти була помилка; Я пішов і зняв його. Я зараз виправлю три .
Лінн

2
Програми перша і шість - це по суті синтаксичні помилки, які скидають вихідний код на STDOUT і показують помилку на STDERR. Здається, що консенсус полягає в тому, що це добре (так кудо), але ви повинні згадати це у своїй відповіді.
Денніс

13

CJam, 0,24075

Програми

BA1]100cf|
"two"
{hree}`W<7a.-
N)92+_9+_6+_2~+
S(84^I^U$F^X$G^Y$(
's'i'x

Дякуємо @ user23013 за його пропозицію використовувати 'для шести .

Виведення, довжина, оцінка, використані символи

one    10  0.03162          01       AB         ]    c f         |  
two     5  0.08944  "                                     o  tw     
three  13  0.02133        -.     7  <        W     `a e h  r    { } 
four   15  0.01721      )+    2 6  9      N       _                ~
five   18  0.01309   $ (       4  8    FGI SU XY ^                  
six     6  0.06804    '                                  i  s  x

Перевірте результати самостійно в інтерпретаторі CJam .


6

Безсоння , 0,100688383057110116

Просто для початку. Це дуже малоймовірно, що це виграє. Згідно з чинною схемою оцінювання, будь-яка мова, яка може друкувати oneз 5 або меншими символами, має переважну перевагу.

один (8 байт, 0,04419417382415922)

uuyp>~p~

два (9 байт, 0,037037037037037035)

oeoojdoLj

три (21 байт, 0,010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

чотири (23 байти, 0,009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt

4

Навушники , 0,044623631135793776

Створений тут

Ця мова є простою заміною BF, де єдине, що має значення, - значення символу за модулем 8.

На жаль, довші програми дають гірший бал, незважаючи на те, що вони зможуть дістатись до дванадцяти ! (Я міг би стати вищим, якби міг використовувати недруковані ASCII та Unicode.)

один

##%%%%%%%&##$%&#&%&%%%%%%%%%&

два

--------+--.+++,-..+++.--------.

три

5555555535563334566555555555555633333333336555555555555566

чотири

==;=====>;<=>>;;;;;;;;;>;;;;;;>===>

п’ять

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

шість

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

сім

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

вісім

]][]]]]]^[\]^]^[[[[^]]^[^[[[[[[[[[[[[^

дев'ять

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

десять

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

одинадцять

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

дванадцять

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~

Можна використовувати лише символи, вкладки та нові рядки для друку ASCII.
jimmy23013

@ user23013 Я зробив стільки, скільки міг, і дістався до 12.
mbomb007

2

/// , 0,19245008972987526

one

Ця відповідь натхненна відповіддю @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳, в якій він сказав

Згідно з чинною схемою оцінювання, будь-яка мова, яка може друкувати oneз 5 або меншими символами, має переважну перевагу.


Гаразд, алгоритм оцінювання, схоже, має лазівку. Гарно зіграно.
Денніс

Ну, це питання пісочне так довго, щоб отримати кращий метод балів. І це все ще не спрацювало добре ... Це також працює в PHP, ASP тощо.
jimmy23013

0

SmileBASIC, .10062

"один"

?"one

"два"

PRINT MID$(@two,1,3)

Інша моя відповідь цікавіша, але ця отримує більш високу оцінку.

Важливою стратегією отримання найдовшого ланцюга є використання БОЛЬШИХ символів для збереження UNIQUE символів (наприклад, використання x - -xв програмі 2 для збереження y + yдля програми 3)

Проблема системи підрахунку балів полягає в тому, що вона набирає 2 коротких програми краще, ніж три довгі програми, тому немає ніяких причин зберігати символи для пізніших програм, якщо це робить поточну програму довшою.

Крім того, він оцінює окремі короткі програми вище, ніж менший розмір TOTAL. Якби я помінятися ?і PRINTв моїй обороні я можу зберегти 1 символ, але моя оцінка в два рази менше.

Я думаю, що було б краще базувати його лише на кількості програм, із загальним розміром як мейкер.


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