Karakter paylaşmadan dizeleri yazdırma


15

Düzenle: Boşluk alanlarının yeniden kullanılmasına izin verilir.

Göreviniz, parametreleri veya işlev adlarını kullanmadan aynı programa n program (veya işlev veya işlev gövdesi) yazmaktır . K inci program çıktısı gerekir (ana) sayısı k , standart İngilizce (isteğe bağlı bir arka yeni satır ile) küçük harflerle. Bu nedenle, ilk program çıktı one, ikinci çıktı twovb twenty-one. Olmalıdır . İki parçadan oluşan bir sayı için, tire işareti ile ayrılmalıdır .

Ancak gönderiminizdeki hiçbir program, boşluk içermeyen karakterleri veya faydalı işler yaparak boşluk karakterlerini paylaşamaz. İlk program, sadece eğer Örneğin, "one"daha sonra hiçbiri " o nve ediğer programlarda tekrar kullanılabilir.

İki veya daha fazla programda boşluk ayırıcı karakterleri (boşluklar, yeni satırlar ve sekmeler) yalnızca ayırıcı veya girinti işlevi görüyorsa ve kendi başlarına hiçbir şey yapmıyorlarsa kullanabilirsiniz. Bu nedenle, bunları Whitespace dilinde yeniden kullanamazsınız ve bunları birden fazla programda dizelerde kullanamazsınız.

Yalnızca yazdırılabilir ASCII karakterlerini, sekmelerini ve yeni satırlarını (CR ve LF dahil) kullanabilirsiniz. Her program en az 1 karakter içermelidir.

Puanınız 1 / program büyüklüğü ^ 1.5 toplamıdır. En yüksek puan kazanır. Puanınızı hesaplamak için bu Yığın Snippet'ini ( veya bu CJam kodunu ) kullanabilirsiniz:

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>


Daha iyi bir puanlama kuralı 1 / (program boyutu + c) ^ 1.5 toplamı olabilir, burada c bir sabittir. Ama bence değiştirmek için çok geç.
jimmy23013

Hedef bu olduğu için daha yüksek bir kardinal sayıya ulaşmak için bir çarpan ekleyebilir miyiz? On iki taneye çıktım, diğerlerinden daha yüksek, ama hala kaybediyorum.
mbomb007

@ mbomb007 Kasıtlı olarak Headsecks'i daha düşük bir skorla yaptığım için üzgünüm. Ancak Headsecks'in diğerlerine benzer bir puanı varsa, sanırım Glif çok fazla kazanacaktır (Lenguage dememek için değil).
jimmy23013

Bunu
boşlukta

1
@ mbomb007 Yine benzer bir soru soruyorsam, muhtemelen skordaki program boyutlarına küçük bir sabit ekleyeceğim. Ancak bu soruda değişiklik yapmak çok keyfi.
jimmy23013

Yanıtlar:


6

gs2 , 0.38669200758867045

Tüm bu programlardan beyaz alanı kaldırın , ancak üç tanesi , yalnızca (öksürükler) okunabilirlik içindir. biri ve altı gs2 programları (yığını yığılmış olarak ), hangi onları rahatça yapar .

bir (3 bayt)

one

iki (1384 bayt)

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 bayt)

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

Bir sürü önemli boşluk bu yüzden altıgen bir dökümü. Başlangıçta tek satırlık bir besleme karakteri vardır:


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

dört (276 bayt)

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

beş (178 bayt)

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

altı (3 bayt)

six

Bu gereksinimi görmedim - geçip ara çözümleri çözeceğim.
Lynn

Kullanmak olsun 20yoluyla 7E, 09(sekme), 0A(LF) ve 0D(CR), doğru mu?
Lynn

Evet. Açıkça CR'ye izin verecek şekilde düzenlendi.
jimmy23013

1İçinde beş bir yazım hatası; Gittim ve kaldırdım. Şimdi üçünü düzeltirim .
Lynn

2
Birinci ve altı programlar , kaynak kodu STDOUT'a döken ve STDERR'da bir hata gösteren sözdizimi hatalarıdır. Fikir birliği bu Tamam gibi görünüyor (yani kudos) ama cevabında belirtmek gerekir.
Dennis

13

CJam, 0.24075

Programlar

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

Onun önerisi kullanmak için @ user23013 sayesinde 'için altı .

Çıktı, uzunluk, skor, kullanılan karakterler

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

Sonuçları CJam yorumlayıcısında kendiniz doğrulayın .


6

Uykusuzluk , 0.100688383057110116

Sadece işleri başlatmak için. Bunun kazanması pek olası değil. Mevcut puanlama şeması altında, one5 veya daha az karakterle yazdırabilen herhangi bir dilin çok büyük avantajı vardır.

bir (8 bayt, 0.04419417382415922)

uuyp>~p~

iki (9 bayt, 0.037037037037037035)

oeoojdoLj

üç (21 bayt, 0.010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

dört (23 bayt, 0.009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt

4

Kulaklık , 0.044623631135793776

Burada üretildi

Önemli olan tek şey, karakter değeri modulo 8 olan bu dil basit bir BF ikamesidir.

Ne yazık ki, daha uzun programlar on ikiye ulaşabilmesine rağmen daha kötü bir puan veriyor ! (Yazdırılamayan ASCII ve Unicode kullanabilirsem daha da yükselebilirdim.)

bir

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

iki

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

üç

5555555535563334566555555555555633333333336555555555555566

dört

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

beş

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

altı

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

Yedi

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

sekiz

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

dokuz

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

on

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

on bir

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

on iki

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

Yalnızca yazdırılabilir ASCII karakterlerini, sekmelerini ve yeni satırları kullanabilirsiniz.
jimmy23013

@ user23013 Yapabildiğim kadar çok şey yaptım ve 12'ye
ulaştım

2

/// , 0.19245008972987526

one

Bu cevap, @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳'nin cevabından esinlenerek şöyle dedi:

Mevcut puanlama şeması altında, one5 veya daha az karakterle yazdırabilen herhangi bir dilin çok büyük avantajı vardır.


Tamam, puanlama algoritmasında boşluk var gibi görünüyor. Güzel oynadı.
Dennis

Bu soru sadece daha iyi bir puanlama yöntemi elde etmek için çok uzun süre korumalı. Ve hala iyi çalışmadı ... Bu aynı zamanda PHP, ASP, vb. De çalışır
jimmy23013

0

SmileBASIC, .10062

"bir"

?"one

"iki"

PRINT MID$(@two,1,3)

Diğer cevabım daha ilginç, ama bu daha yüksek bir puan alıyor.

En uzun zinciri elde etmek için önemli bir strateji UNIQUE karakterlerden tasarruf etmek için DAHA FAZLA karakter kullanmaktır (örneğin, program 3'te x - -xkaydetmek y + yiçin program 2'de kullanmak )

Puanlama sistemi ile ilgili problem, 2 uzun programı 3 uzun programdan daha iyi puanlandırmasıdır, bu nedenle mevcut programı daha uzun hale getirirse daha sonraki programlar için karakterleri kaydetmenin bir nedeni yoktur.

Ayrıca, daha küçük bir TOPLAM boyuttan daha yüksek bireysel kısa programlara değer verir. Eğer takas edersem ?ve PRINTcevabımda 1 karakter kaydedebilirim, ama puanım da YARIM.

Bence sadece bir dizi kırıcı olarak toplam boyutu ile sadece program sayısına dayandırmak daha iyi olurdu .


3
Bence her iki program da o...
JayCe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.