Bir programı mümkün olan en az farklı karakterle kodlayın,


12

Amaç, mümkün olan en az karaktere sahip başka bir programı (girişi) kodlayan bir program yazmaktır.

puanlama

  • Puan, çıktı için gereken farklı karakter sayısına eşittir.
  • Düşük puan daha iyidir.

kurallar

  • Sınırlı komut kümesine sahip hedef dil yok. (Hayır Brainf ** k, Boşluk vb.)
    Düzenleme : Yani en az 26 anlamlı karakter, Abir brainf ** k programının çalışma şeklini değiştirmez, bu yüzden bu karakteri sayamazsınız. Aynı şey boşluk için de geçerlidir.
  • Hedef dil, bu sorunun yazıldığı sırada bulunmalıdır.
  • Puanınızı nasıl arşivlediğinize ilişkin küçük bir açıklama eklemeniz gerekir.
  • Giriş programı geçerlidir.
  • Kodlanan program, girişle aynı dilde geçerli bir program olmalıdır.
  • Kodlanan program, orijinal programla aynı işi yapmalıdır.
  • Kodlayıcınız bu dildeki geçerli tüm programlar için çalışmalıdır.
  • Bazı örnek giriş ve çıkışlarını ekleyin.

notlar

  • Kodlayıcı yalnızca hedeflediği dilde değil, herhangi bir dilde yazılabilir.
  • Bu değildir , okunabilir programlar teşvik edilir.
  • Asıl amaç, o dilde herhangi bir şey yazmak için kaç farklı karakterin gerektiğini görmek. BF vs'ye izin vermedim çünkü meydan okuma olmazdı.
  • Bu, olabildiğince az sayıda karakterle bir dize yazdırmaktan ilham , bu soru için olarak alabilirsin .

Misal

Java'da \uXXXXbunun yerine diğer karakterleri kullanabilirsiniz . Geçerli bir giriş, girişteki her karakteri bu şekilde kodlar. Bu puan 18 olacaktır. ( \ 0-9a-f)

Tcl'deki kod, bir Java programını kodlar:

set res {}
foreach char [split [read stdin] {}] {
    append res [format \\u%04x [scan $char %c]]
}
puts $res

oyların kapanması için özür dilerim ... bunun codegolf.stackexchange.com/questions/6974 kopyasının bir kopyası olduğunu düşündüm ama bunun python'a özgü olduğunu düşündüm .
boothby

2
Java skorunuz ve kodlayıcınızla: Çok fazla Tcl konuşmuyorum, ama getssadece tek bir girdi satırı okumuyor musunuz? Ve ukodlayıcınızda kaçırdınız (ancak diğer taraftan boşluğa ihtiyacınız yoktur ve bu nedenle skor aynı kalır).
Howard

7
Tüm programlama dillerinde "sınırlı komut kümesi" yoktur? Çizgiyi nerede çiziyorsun?
jpjacobs

4
Bunu kapatmak için oy kullanıyorum çünkü dilde çok belirsiz bir yasakla lekelenmiş bir zafer durumu var. Unary yasaklanmasaydı, puan 1 olurdu. Eğer beyin sıkışması yasaklanmadıysa, 7 puan alacaktı (dilin kendisinde doğal olarak 8 komut + 248 yorum karakteri olduğunu unutmayın). Peki, doğal olarak çok az komuta sahip olmak ve meşru olmak için yeterli olmak arasındaki çizgi nerede.

1
Python gibi dillerin bile sınırlı bir komut seti vardır. "Yeni bir işlev yaratamazsınız", sadece yeni bir işlev veya başka bir şey yaratırsınız, fakat ayrılmış kelimeler aynı kalır. "Komut" tanımı belirsizdir. Soru muhtemelen dilleri sınırlamamakla (sadece önemsiz cevapları yükseltmeyin) ve kullanılan karakter kümesinin dildekiler için uygun bir alt küme olmasını gerektirerek düzeltilebilir.
mbomb007

Yanıtlar:


10

GolfScript / GolfScript, skor 4

"'',,"\{"'"\","*"',+"}%"''+~"

Kodlayıcının kendisi, STDIN'deki orijinal kodu alan ve onu bir karakter dizisine dönüştüren bir GolfScript programıdır ',+~. Bu çıktının kendisi, orijinal sürümle aynı işlemleri gerçekleştiren geçerli bir GolfScript kodudur.

Temel yöntem, kodun bir dize olarak kodlanmasından oluşur (chars kullanarak ',+aşağıya bakın) ve ardından eval komutunu kullanarak bu dizeyi değerlendirin ~.

Biri herhangi bir dizeyi GolfScript'teki bir sayı dizisiyle birleştirirse, sayılar kod noktalarına dönüştürülür ve sonuç bir dizenin kendisidir. Böylece dize kodlaması, bir sayı listesi oluşturur (giriş kodunun kod noktalarından) ve sonra bunları boş bir dize ile birleştirir.

Misal:

Giriş kodu

"hi"
p

çevrilir (not: okunabilirlik için satır sonları ve yorumlar eklenir)

# initialize an empty array []
'',,

# append number 34 (length of string ',,, ... ,,,')
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+

# ... other numbers
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+
',,,,,,,,,,',+
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+

# result is array [34 104 105 34 10 112]

# append empt string, i.e. convert array to string (results in "\"hi\"\np")
''+

# evaluate
~

11

Python -> Python, 8 farklı karakter

def minimal_python(input_code):
    """Convert Python code to minimal Python code."""

    # Create a list of the ordinal numbers of <input_code>'s characters.
    # '%' signs have to be treated specially and are represented with -1.
    ords = []
    num_escaped_chars = 0
    for char in input_code:
        if char == '%':
            ords.append(-1)
        else:
            ords.append(ord(char))
            num_escaped_chars += 1

    modulo_sign_escape = '%' * 2**num_escaped_chars
    def formatters():
        num_escaped_chars_so_far = 0
        for o in ords:
            if o == -1:
                yield modulo_sign_escape
            else:
                yield '%' * 2**num_escaped_chars_so_far + 'c'
                num_escaped_chars_so_far += 1
    format_str = "'" + ''.join(formatters()) + "'"

    values_str = ''.join('%' + '-~'*o + '0' for o in ords if o != -1)

    return 'exec' + format_str + values_str

Bu, giriş dizesini yeniden oluşturmak için modulo biçimlendirmesi kullanır. Örneğin, print 1bu programın sonuçları:

exec'%c%%c%%%%c%%%%%%%%c%%%%%%%%%%%%%%%%c%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%c%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%c'%-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0

Teorik olarak böyle herhangi bir programı kodlamak, ancak ortaya çıkan programı her zaman fazla 2 olacak n karakterleri, burada n içermeyen girdi karakter sayısı vardır %semboller.


Ortaya çıkan programın alt sınırı, 2**n+3*n-1 + 6tüm giriş karakterleri dahil karakterlerdir (her karakterin bir NUL bayt olduğunu varsayarsanız). Bu, OEIS A132074 , artı 6 için alınır exec''. Karakterlerin ASCII yazdırılabilir olması gerektiğini varsayarsanız, alt sınır daha yüksektir. repl.it/EHEN
mbomb007

8

CJam -> CJam, puan: 3

CJam sorudan daha yenidir, bu yüzden kazanmaya uygun değildir.

q{[{_'(>{'(-')*''\+}{is'c+T}?}%{"+"T}*'~]}:T~

Kullanır ')~. ')karakterdir )ve her bir ekstra karakter bir )arttırır. ~bir karakteri veya dizeyi değerlendirebilir. Tüm program değerlendirilerek tüm karakterler birleştirildikten sonra değerlendirilir +. Ve karakter değerinin bir tamsayısı ve sayıdan karaktere işlemi her karakterden küçük olarak değerlendirilir ).

Örnekler

XX{_2$+}I*]N*

şu dile çevrilmiştir:

'))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))')))~')))))))))))'))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))')))~'))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))))))))))))))))))))))))))))))')))~'))')))~~

ve

q{[{_'(>{'(-')*''\+}{is'c+T}?}%{"+"T}*'~]}:T~

şu dile çevrilmiştir:

')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))'))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))'))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')')))~'))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))')))~'))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))'))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))')))~')))))))))))'))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))))))))))')))~'))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~

4

APL (puan: 10)

'⍎⎕AV[',(⊃,/{'(⍴',(⍵/'⍬'),')'}¨⎕AV⍳⍞),']'

Kodlamada kullanılan karakterler: ⍎⎕AV[(⍴⍬)]

Kodlanacak APL programı kendisini APL karakter kümesiyle sınırlamalı ve fazladan bir Unicode kullanmamalıdır.

Program için kodlama 42(Yaşam, Evren ve Her Şeye cevabı veren):

⍎⎕AV[(⍴⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬)(⍴⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬)]

Nasıl çalışır: boş liste, ⍬⍬⍬⍬bu nedenle dört boş listenin bir listesi, dört boş liste ⍴⍬⍬⍬⍬listesinin uzunluğu, dört. Dyadic yeniden şekillendirilir, bu nedenle liste uzunluğu komutları parantez içine alınmalı ve dört numaralı karakterin son kodlamasını verecektir (⍴⍬⍬⍬⍬).

Bu sayılar daha sonra aranır ⎕AVve karakter kümesidir ve ortaya çıkan dizeyi yürütür.

(İlk bakışta skor kullanarak 9'a teslim edilmeden gibi görünüyor ⎕UCSyerine ⎕AVve kaydetme [], ama bu işliyor değil, çünkü (⍴⍬)(⍴⍬) Skalerlerin listelerinin bir listesi, yani [[1], [1]]yerine [1, 1]gerekli olacağını ve bu çevrede çalışan kodlanmış değerlerin virgülle serpiştirilmesini ve skoru tekrar 10'a getirmesini gerektirir.)


2

RProgN , 7 Farklı Karakter, Rekabet Etmeme

RProgN bu sorudan daha yenidir.

' do.Lc

Programı dönüştürün 'oooo...' L c 'ooooo...' L c 'oo...' L c . . . do, burada her 'oo ...' karakter kodlarını temsil eder ve bunlardan bir ip oluşturmak için kesme işaretleri ile çevrilidir. L c sonra onları sayı sabitine dönüştürür. Tüm dizeler yığına yerleştirildikten sonra, kodlanmış dizedeki karakterlerin eksi kodlanmış dizeyi yeniden oluşturmak ve onu yürütmek için bir zincir.

Enkoder, ayrıca RProgN ile yazılmıştır.

'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . do

Çevrimiçi deneyin!


1

Yakut -> Yakut, 8

#Convert a number from 0 to 255 to the form "111+11+11+1+1+1"
def byte_to_ones(byte)
  output = []
  ones = [111,11,1]
  ones.each do |one|
    while byte>=one
      byte-=one
      output<<one
    end
  end
  output.join('+')
end

bytes = $<.each_byte.map { |byte| byte_to_ones(byte) }

puts "eval''<<#{bytes.join('<<')}"

Örneklem:

puts "Hello, world!" => eval''<<111+1<<111+1+1+1+1+1+1<<111+1+1+1+1+1<<111+1+1+1+1<<11+11+1+1+1+1+1+1+1+1+1+1<<11+11+11+1<<11+11+11+11+11+11+1+1+1+1+1+1<<11+11+11+11+11+11+11+11+11+1+1<<11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1<<11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1<<111<<11+11+11+11<<11+11+1+1+1+1+1+1+1+1+1+1<<111+1+1+1+1+1+1+1+1<<111<<111+1+1+1<<11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1<<11+11+11+11+11+11+11+11+11+1<<11+11+11<<11+11+11+1<<1+1+1+1+1+1+1+1+1+1

Bağlantılı problemde verilen Ruby çözümünü uygular ve G / Ç'yi eval ile değiştirir.


Soru gövdesinde zaten bağlantılıydı; Yorumunu kullanmıyordum. Yanıtları oradan tersine çevirmeniz gerektiğinden, bağlantı noktalarını oradan taşımak önemsizdir.
histokrat

1
Soru gövdesinde bu soruya yapılan referansı kaçırdım. Hala cevapları dönüştürmenin çok ilginç olduğunu düşünmüyorum, ama önceki yorumumu özür dilerim.
Peter Taylor

0

05AB1E , 8 ayrı bayt (rakip olmayan)

žĆISk'>×€"žĆ0ÿè"J…J.V«?

Rakip olmayan, çünkü 05AB1E'nin bu sürümü 2018'in ortasında yayınlandı (ve 05AB1E mirasının ilk sürümü Aralık 2015'te yayınlandı, ancak bu sürümde žĆzaten yerleşik yoksun ).

Çevrimiçi deneyin.

Açıklama:

žĆ        # Push the 05AB1E code-page
  IS      # Push the input, and convert it to a list of characters
    k     # Get the index of each character in the codepage-string
     '>× '# Convert each index to a string of that many repeated ">"-characters
         # For each ">"-string:
 "žĆ0ÿè"  #  Map it to the string "žĆ0ÿè",
          #  where the `ÿ` is automatically filled with the ">"-string
J         # Join these strings together
 J.V«    # And append "J.V" at the end
      ?   # After which we output the string without trailing newline

Bu žĆ0>èJ.V, aşağıdaki biçimde 8 ayrı bayta sahip bir program oluşturur :

Girdiğimiz žĆ0>...>èprogramın her karakteri için çoklu ( >...>potansiyel olarak hiçbiri ile maksimum 256 arasında >):

  • žĆ: 05AB1E kod sayfasını itin
  • 0: İt 0
  • >Her biri 1 oranında artan belirli bir miktar (potansiyel olarak hiçbiri, maksimum 256'ya kadar)
  • è: Bu tamsayıyı kod sayfası dizesine dizin

Ve ondan sonra:

  • J: Dizindeki bu dizine alınmış karakterleri sınırlayıcı olmadan bir araya getirin
  • .V: Ve bu dizeyi 05AB1E kodu olarak değerlendirin
  • (bundan sonra sonuç dolaylı olarak çıkarılır)

Böyle bir programı deneyin ( küçük harfli alfabeyi iter ve palindromize eder).

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.