Drukuj ciągi bez udostępniania znaków

15

Edycja: dozwolone ponowne użycie białych znaków.

Twoim zadaniem jest napisanie n programów (lub funkcji lub treści funkcji bez użycia parametrów lub nazw funkcji) w tym samym języku. K Program th powinien wyjście (kardynał) liczba k w standardowym angielskim małymi literami (z opcjonalnym znakiem nowej linii). Pierwszy program powinien wypisać one, drugi powinien wypisać twoitd. W przypadku liczby składającej się z dwóch części powinny one być oddzielone myślnikiem twenty-one.

Ale żaden z przesyłanych programów nie może udostępniać znaków innych niż białe znaki lub białych znaków wykonujących użyteczne prace. Na przykład, jeśli twój pierwszy program jest po prostu "one", wtedy żadna " o ni emogą być ponownie wykorzystane w innych programach.

Możesz używać białych znaków (spacji, znaków nowej linii i tabulatorów) w dwóch lub więcej programach, jeśli służą one jedynie jako separatory lub wcięcia i nie robią nic samodzielnie. Dlatego nie można ich ponownie używać w języku białych znaków i nie można ich używać w ciągach znaków w więcej niż jednym programie.

Można używać tylko drukowalnych znaków ASCII, kart i znaków nowej linii (w tym CR i LF). Każdy program musi zawierać co najmniej 1 znak.

Twój wynik to suma 1 / rozmiar programu ^ 1,5. Najwyższy wynik wygrywa. Możesz użyć tego fragmentu stosu ( lub tego kodu CJam ), aby obliczyć swój wynik:

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>

jimmy23013
źródło
Jedną lepszą regułą punktacji może być suma 1 / (rozmiar programu + c) ^ 1,5, gdzie c jest stałą. Ale myślę, że prawdopodobnie jest już za późno, aby to zmienić.
jimmy23013
Czy możemy dodać mnożnik, aby uzyskać wyższą liczbę kardynalną, ponieważ wydaje się, że to jest cel? Mam dwanaście lat, więcej niż wszystkie inne, ale wciąż przegrywam.
mbomb007
@ mbomb007 Przepraszamy za umyślne obniżenie wyniku Headsecks. Ale jeśli Headsecks ma podobny wynik do innych, myślę, że Glypho wygra za dużo (nie mówiąc o Lenguage).
jimmy23013
Chcę to zrobić spacją :(
YoYoYonnY
1
@ mbomb007 Jeśli ponownie zadam podobne pytanie, prawdopodobnie dodam małą stałą do rozmiarów programu w partyturze. Ale zmiana tego pytania jest zbyt arbitralna.
jimmy23013

Odpowiedzi:

6

gs2 , 0,38669200758867045

Usuń białe znaki ze wszystkich tych programów, ale trzy , to tylko dla czytelności (kaszel) . jeden i sześć to programy gs2, które ulegają awarii (przez przepełnienie stosu), co wygodnie sprawia, że ​​są one quinesowane .

jeden (3 bajty)

one

dwa (1384 bajty)

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

trzy (92 bajty)

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

Wiele znaczących białych znaków, więc oto zrzut heksowy. Na początku ma znak pojedynczego wiersza:


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

cztery (276 bajtów)

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

pięć (178 bajtów)

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

sześć (3 bajty)

six
Lynn
źródło
Nie widziałem tego wymogu - przejrzę i naprawię rozwiązania pośrednie.
Lynn
Używam 20za pomocą 7E, 09(tab), 0A(LF) i 0D(CR), prawda?
Lynn
Tak. Edytowane, aby umożliwić CR jawnie.
jimmy23013
1W pięciu był typo; Poszedłem i usunąłem to. Naprawię teraz trzy .
Lynn
2
Programy 1 i 6 są zasadniczo błędami składniowymi, które zrzucają kod źródłowy do STDOUT i pokazują błąd na STDERR. Konsensus wydaje się, że jest to w porządku (więc hołd), ale powinieneś wspomnieć o tym w swojej odpowiedzi.
Dennis
13

CJam, 0,24075

Programy

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

Dzięki @ user23013 za jego sugestię użycia 'przez sześć .

Dane wyjściowe, długość, wynik, użyte znaki

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

Sprawdź wyniki samodzielnie w interpretatorze CJam .

Dennis
źródło
6

Bezsenność , 0,100688383057110116

Na początek. Jest mało prawdopodobne, że wygra. Zgodnie z obecnym schematem punktacji każdy język, który może drukować one5 lub mniej znaków, ma ogromną przewagę.

jeden (8 bajtów, 0,04419417382415922)

uuyp>~p~

dwa (9 bajtów, 0,037037037037037035)

oeoojdoLj

trzy (21 bajtów, 0,010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

cztery (23 bajty, 0,009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨d̷̰̀ĥ̷̳
źródło
4

Zagłówki , 0,044623631135793776

Wygenerowano tutaj

Ten język jest prostym podstawieniem BF, w którym liczy się tylko wartość modulo 8.

Niestety, dłuższe programy dają gorszy wynik, mimo że są w stanie dotrzeć do dwunastu ! (Mógłbym być wyższy, gdybym mógł użyć niedrukowalnych ASCII i Unicode.)

jeden

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

dwa

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

trzy

5555555535563334566555555555555633333333336555555555555566

cztery

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

pięć

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

sześć

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

siedem

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

osiem

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

dziewięć

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

dziesięć

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

jedenaście

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

dwanaście

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~
mbomb007
źródło
Możesz używać tylko drukowalnych znaków ASCII, kart i znaków nowej linii.
jimmy23013
@ user23013 Zrobiłem tyle, ile mogłem i doszedłem do 12.
mbomb007
2

/// , 0,19245008972987526

one

Ta odpowiedź jest inspirowana odpowiedzią @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨d̷̰̀ĥ̷̳, w której powiedział

Zgodnie z obecnym schematem punktacji każdy język, który może drukować one5 lub mniej znaków, ma ogromną przewagę.

użytkownik12205
źródło
OK, algorytm oceniania wydaje się mieć lukę. Dobrze rozegrane.
Dennis
Cóż, to pytanie jest tak długo piaskownicowane, aby uzyskać lepszą metodę punktacji. I nadal nie działał dobrze ... Działa to również w PHP, ASP itp.
jimmy23013
0

SmileBASIC, .10062

"jeden"

?"one

"dwa"

PRINT MID$(@two,1,3)

Moja druga odpowiedź jest bardziej interesująca, ale ta uzyskała wyższy wynik.

Ważną strategią uzyskania najdłuższego łańcucha jest użycie WIĘCEJ znaków do zapisywania znaków UNIKALNYCH (na przykład użycie x - -xw programie 2 do zapisania y + ydla programu 3)

Problem z systemem oceniania polega na tym, że ocenia 2 krótkie programy lepiej niż 3 długie programy, więc nie ma powodu, aby zapisywać znaki dla późniejszych programów, jeśli wydłuży bieżący program.

Ponadto wartość poszczególnych krótkich programów jest większa niż mniejszy OGÓŁEM. Jeśli zamienię ?i PRINTw swojej odpowiedzi mogę uratować 1 postać, ale mój wynik to PÓŁ.

Myślę, że lepiej byłoby oprzeć go tylko na liczbie programów, z całkowitym rozmiarem.

12Me21
źródło
3
Myślę, że oba programy współużytkują o...
JayCe