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>


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

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 .


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

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

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

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ę.


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.


3
Myślę, że oba programy współużytkują o...
JayCe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.