Kolmogorov Esnekliği. AKA Satış! Hisse Senetleri Sürer Tüm Codegolf Kapalı!


12

Bu bir , , hiçbir girişli sabit çıktı üretmek için meydan.

Bununla birlikte, çıktı biçimi esnektir - standart çıkışa yazdırılabilir, standart hataya yazdırılabilir, karakter listesi olarak döndürülebilir, bayt listesi olarak döndürülebilir veya tamsayı listesi olarak döndürülebilir. Başka bir şey makul görünüyor düşünüyorsanız sadece yorum isteyin!

İşte basit, büyük harfli ASCII sanat CODEGOLF :

 CCCC   OOO   DDDD   EEEEE   GGG    OOO   L      FFFFF
C      O   O  D   D  E      G      O   O  L      F
C      O   O  D   D  EEE    G  GG  O   O  L      FFF
C      O   O  D   D  E      G   G  O   O  L      F
 CCCC   OOO   DDDD   EEEEE   GGGG   OOO   LLLLL  F

Herhangi bir satırsonu (veya satırların sonundaki boşluklar) olmadan 256 karakter uzunluğundadır:

 CCCC   OOO   DDDD   EEEEE   GGG    OOO   L      FFFFFC      O   O  D   D  E      G      O   O  L      FC      O   O  D   D  EEE    G  GG  O   O  L      FFFC      O   O  D   D  E      G   G  O   O  L      F CCCC   OOO   DDDD   EEEEE   GGGG   OOO   LLLLL  F

Boşluk olmayan karakterlerin (0 tabanlı) dizinleri şunlardır:

1, 2, 3, 4, 8, 9, 10, 14, 15, 16, 17, 21, 22, 23, 24, 25, 29, 30, 31, 36, 37, 38, 42, 49, 50, 51, 52, 53, 54, 61, 65, 68, 72, 75, 82, 89, 93, 96, 103, 104, 111, 115, 118, 122, 125, 126, 127, 132, 135, 136, 139, 143, 146, 153, 154, 155, 156, 163, 167, 170, 174, 177, 184, 188, 191, 195, 198, 205, 207, 208, 209, 210, 214, 215, 216, 220, 221, 222, 223, 227, 228, 229, 230, 231, 235, 236, 237, 238, 242, 243, 244, 248, 249, 250, 251, 252, 255

Sen kodunuzda bu 97 bayt herhangi kullanamaz pek çoğunda (ancak kullandığınız kod sayfasında 32 byte ile değiştirilir eksik bayt ile, bu sırayla, bu bayt bir liste üretmek (veya benzer çıkış) gerekir bir boşluk karakteri kod sayfaları).

Güzel baskı * satırsonlarını ekleyebilirsiniz (ancak satırlarda arka boşluk bırakılmaz).

Örneğin, Jelly kod sayfasını kullanarak bu çıktı kabul edilebilir:

 ¢£¤¥   ®µ½   ÇÐÑ×   ßæçðı   øœþ    $%&   *      12345
6      =   A  D   H  K      R      Y   ]  `      g
h      o   s  v   z  }~¶    ⁴  ⁷⁸  ⁻   Ɓ  Ƒ      ƲȤɓ
ƈ      ɲ   ʂ  ȥ   Ẹ  Ḳ      Ṭ   Ỵ  Ḃ   Ḟ  İ      Ṡ
 ẆẊẎŻ   ẹḥị   ṇọṛṣ   ẉỵẓȧḃ   ḟġḣŀ   ṗṙṡ   ẏż«»‘  ”

... ama öyle de:

 ¢£¤¥   ®µ½   ÇÐÑ×   ßæçðı   øœþ    $%&   *      123456      =   A  D   H  K      R      Y   ]  `      gh      o   s  v   z  }~¶    ⁴  ⁷⁸  ⁻   Ɓ  Ƒ      ƲȤɓƈ      ɲ   ʂ  ȥ   Ẹ  Ḳ      Ṭ   Ỵ  Ḃ   Ḟ  İ      Ṡ ẆẊẎŻ   ẹḥị   ṇọṛṣ   ẉỵẓȧḃ   ḟġḣŀ   ṗṙṡ   ẏż«»‘  ”

...Ve öyleyse:

[32, 1, 2, 3, 4, 32, 32, 32, 8, 9, 10, 32, 32, 32, 14, 15, 16, 17, 32, 32, 32, 21, 22, 23, 24, 25, 32, 32, 32, 29, 30, 31, 32, 32, 32, 32, 36, 37, 38, 32, 32, 32, 42, 32, 32, 32, 32, 32, 32, 49, 50, 51, 52, 53, 54, 32, 32, 32, 32, 32, 32, 61, 32, 32, 32, 65, 32, 32, 68, 32, 32, 32, 72, 32, 32, 75, 32, 32, 32, 32, 32, 32, 82, 32, 32, 32, 32, 32, 32, 89, 32, 32, 32, 93, 32, 32, 96, 32, 32, 32, 32, 32, 32, 103, 104, 32, 32, 32, 32, 32, 32, 111, 32, 32, 32, 115, 32, 32, 118, 32, 32, 32, 122, 32, 32, 125, 126, 127, 32, 32, 32, 32, 132, 32, 32, 135, 136, 32, 32, 139, 32, 32, 32, 143, 32, 32, 146, 32, 32, 32, 32, 32, 32, 153, 154, 155, 156, 32, 32, 32, 32, 32, 32, 163, 32, 32, 32, 167, 32, 32, 170, 32, 32, 32, 174, 32, 32, 177, 32, 32, 32, 32, 32, 32, 184, 32, 32, 32, 188, 32, 32, 191, 32, 32, 32, 195, 32, 32, 198, 32, 32, 32, 32, 32, 32, 205, 32, 207, 208, 209, 210, 32, 32, 32, 214, 215, 216, 32, 32, 32, 220, 221, 222, 223, 32, 32, 32, 227, 228, 229, 230, 231, 32, 32, 32, 235, 236, 237, 238, 32, 32, 32, 242, 243, 244, 32, 32, 32, 248, 249, 250, 251, 252, 32, 32, 255]

(Bu sonuncusu, herhangi bir kod sayfası olan herhangi bir dilde geçerli bir liste çıktısıdır ve herhangi bir makul liste biçimlendirmesi de kullanılabilir.)


Kullanılamayan ASCII baytlarını gösteren Python 3 kodu .

* Baskının kendisi aslında o kadar da güzel olmayabilir!


Kodunuzda şu 97 bayttan herhangi birini kullanamayabilirsiniz Bu, şu ASCII karakterlerini kullanamayacağım anlamına gelir: $%&*123456=ADHKRY]``ghosvz}~ve yeni satır yok mu?
Titus

1
@Titus Kod sayfanız ASCII ile hizalanıyorsa, evet - veya bir sekme veya verilen aralıktaki diğer karakterlerden herhangi biri, örneğin yazdırılamaz veya genişletilmiş. (Ayrıca - TIO'daki bağlantılı Python betiğine bakın )
Jonathan Allan

2
Değer için, burada bir kod doğrulayıcı (özel bir kod sayfası olmadığı varsayılarak).
Arnauld

Neredeyse PHP var ... sadece bir yol ( array_map(function($n){return sprintf("%6b",$n);},...)bir $yapabilirim) VE olmadan }(hiçbir fikir) gerekir. Evet; Verileri paketlemek istiyorum!
Titus

Yanıtlar:


7

Python 2 , 321203 bayt

print map(lambda(i,x):(x>'0'and i-8-8-8-8)+8+8+8+8,enumerate(bin(int(reduce(lambda x,y:x+repr('abcdefijkl'.find(y)),'cfjdbljcibkeajjejiljjlcbjddlafklebajjlceljdeadficijflealkeklkljadfbbckjebclkf','')))))

Çevrimiçi deneyin!


Açıklama:

içten dışa:

cfjdbljcibkeajjejiljjlcbjddlafklebajjlceljdeadficijflealkeklkljadfbbckjebclk25731972618407747697792173390589410779249734035626759409848989703511287412985izin verilen karakterlerle kodlanmış sayıdır . ( 123456İzin yok )

reduce(lambda x,y:x+repr('abcdefijkl'.find(y)),'cfjdbl..bclkf','') dizeyi ondalık dizeyle eşler:

  • reduce(lambda x,y:x+y,'..','')ile aynıdır ''.join('..')(Hayır oizin verilir)
  • repr('..')yerine str('..')(Hayır sizin verilir)
  • 'abcdefijkl'.find(y) karakteri rakamla eşler.

enumerate(bin(int(...)))sayı dizesini bir ikili dizeye dönüştürür ve numaralandırır. Bu çiftleri verir[(0,0), (1,b), (2,1), (3,1), ...]

map(lambda(i,x):(x>'0'and i-8-8-8-8)+8+8+8+8, ... ) numaralandırılmış listeyi nihai sonuca dönüştürür.

  • map(lambda(i,x):.. , .. )yerine [... for(i,x)in ...](Hayır o]izin verilir)
  • lambda(i,x): ..her (indeks, değer) çiftini indekse veya 32.
  • (x>'0'and i-8-8-8-8)+8+8+8+8 aynıdır:
    • x>'0'and i or 8+8+8+8, ( oİzin yok )
    • [8+8+8+8,i][x>'0']veya [8<<9-7,i][x>'0'](Hayır, ]izin verilmez)
  • 8+8+8+8= 32(Hayır, 23izin verilmez)

Bu, programın aslında aşağıdakilerle aynı olduğu anlamına gelir:

print[[32,i][x>'0']for i,x in enumerate(bin(25731972618407747697792173390589410779249734035626759409848989703511287412985))]

Orada bazı güzel golf işleri: D
Jonathan Allan

7

C (gcc) , 318 bayt

main(_){--_<88+80+88?printf((int[:>){77707-989908070??>,((int[:>){0xE8E8C79E^0xB0B0080,0xC07E0870^0xE0000C00,0xCC08099C^0xEE0C008E,0xE8888989^0xCC00808,0x9E088990^0x800C0000,0x990C8888^0x080ECC00,0xF9C7a088^0x080000C0,0x9F8C78F8^0x900000??>[_>>(0xC^0x9):>>>(_<<9+9+9>>9+9+9))<<(70^89)>>(70^89)?_:' '),main(_+9-7):0;??>

Çevrimiçi deneyin!

Bu biraz yolculuk ...

1. Listeyi sıkıştırma

Bir şekilde, verilen bir tamsayının özel kod noktalarından biri olup olmadığını kontrol etmemiz gerekecek. Herhangi bir 'çıplak' liste çok uzun olacak, bu yüzden bir kontrol listesi kullanıyoruz. Bu listede kod noktalarında sıfır olmayan bir değer, 'kısıtlanmış' ve sıfır olmayan değerlerde bulunur.

Ne yazık ki bu sadece listeye sahip olmak için 512 bayt sürüyor (benziyor 0,0,7,7,0,7,0,...). Bu bir bit maskesi ile kısaltılabilir.

Bit maskesini kullanmak için her baytı iki parçaya bölecağız. İlk 3 bit diziden bir maske seçerken, son 5 bit dizide bir parça seçer. Varsayılan olarak kullanılan 32 bit tamsayılar 2 ^ 5 = 32 bit'ten fazlasını desteklemediğinden diziyi daha fazla küçültemiyoruz.

Bir referans uygulama kullanarak yazdım:

int main() {
    int i;
    int vals[] = {1, 2, 3, 4, 8, 9, 10, 14, 15, 16, 17, 21, 22, 23, 24, 25, 29, 30, 31, 36, 37, 38, 42, 49, 50, 51, 52, 53, 54, 61, 65, 68, 72, 75, 82, 89, 93, 96, 103, 104, 111, 115, 118, 122, 125, 126, 127, 132, 135, 136, 139, 143, 146, 153, 154, 155, 156, 163, 167, 170, 174, 177, 184, 188, 191, 195, 198, 205, 207, 208, 209, 210, 214, 215, 216, 220, 221, 222, 223, 227, 228, 229, 230, 231, 235, 236, 237, 238, 242, 243, 244, 248, 249, 250, 251, 252, 255, 0};

    for (i = 0; i <= 0xFF; ++i) {
        int j,f;
        f = 0;
        for (j = 0; vals[j]; ++j)
            if (vals[j] == i)
                f = 1;
        if (f)
            printf("1");
        else
            printf("0");

        if (i%32 == 31)
            printf("\n");
    }

    return 0;
}

Bu yeni dizi için komutu kullanarak uygun değerleri üretmeyi başardım echo "obase=16;ibase=2;$(./a.out | rev)" | bc. Bu, yukarıdaki programın ( ./a.out) çıktısını, revher satırı tersine çeviren programa geçirir . Bunu, çıkış tabanını 16'ya ve giriş tabanını 2'ye ayarlayan bc'ye bir başlıkla birlikte yazdırır. Böylece bc, ikili basamakları onaltılık bir bit maskeye dönüştürür.

Ortaya çıkan dizi bu 'beta' çözümde görülebilir:

f(){
    int x;
    int arr[] = {0xE3E3C71E, 0x207E0470, 0x22040912, 0xE4488181, 0x1E048990, 0x91024488, 0xF1C7A048, 0x9F1C78F8};
    for (x=0; x<=0xFF; ++x) {
        int mask = arr[x >> 5];
        int bit = mask >> (x & 0x1F);

        if (bit & 1)
            printf("%c", x);
        else
            printf(" ");
    }
}

2. Kısıtlamalarla başa çıkmak

Yukarıdaki koda yerleştirilmesi gereken birçok kısıtlama vardır. Burada her birini birer birer inceliyorum.

  1. Atama yok

Bu diğer diller tarafından da hissedilir, C'ye atanmadan değişkenlere garantili değerler elde etmek çok zordur. Bizim için en kolay yol, fonksiyonumuzu tam bir program olarak yazmaktır. İlk argümanı, argüman olmadan çağrıldığında maindeğeri argc1 olacak şekilde geçirilir .

  1. Döngü yok

C tek döngü yapılardır for, whileve gotobütün bunlar sınırlı karakterler içerir. Bu bizi özyineleme kullanarak bırakır. Ana işlev 1'den başlar ve argüman> 256 olana kadar tekrarlanır, bu arada argümanı dahili olarak 0 dizinli bir değer kullanacak şekilde azaltır.

  1. Onaltılı değerler

Yukarıdaki dizideki değerler onaltılıktır, ondalık biçime dönüştürüldüklerinde bile, bunlar, özellikle 123456 (AD daha düşük kasalı olabilir) gibi bazı sınırlı semboller içerir. Bu soruna geçici bir çözüm bulmak için, her sabit, başka bir karakterle XORed edilir, böylece kısıtlı karakterler kaldırılır. 1 9 ^ B, 2 C ^ E, 3 B ^ 8, 4 8 ^ C, 5 9 ^ C ve 6 9 ^ F olur (bunu yapmanın daha fazla yolu var, bu yolu seçtim) .

  1. Baskı

Kısıtlamalar, birçok yazdırma işlevini bize bırakmaz. putcharve putsher ikisi de kısıtlı printf. Maalesef printfbir format dizesi göndermemiz gerekiyor , ideal olarak "% c". Tüm bu dizelerde kaldırmak istediğimiz sinir bozucu yüzde işareti vardır. Neyse ki biraz endian bir makine olduğunu varsayıyoruz (çünkü görünüşe göre TIO bunu kullanıyor ve oldukça tipik). Bellekteki baytları 0x25 (%), 0x63 (c), 0x00 (\ 0), herhangi bir şey (önemli değil, boş sonlandırıcıdan sonra) olan tamsayıyı oluşturarak sadece adresini geçebiliriz printfve bunu varsayacaktır. bir dizedir. Çalışan böyle bir sayı -989830363'tür (0xC5006325). Bu, 77707-989908070 gibi kısıtlamalar altında kolayca oluşturulabilir.

Hala herhangi bir değere başvuramayacağımız bir sorun var (çünkü bunları atayamayacağımız ve & kullanamadığımız için), bu nedenle bir dizi değişmezi kullanmalıyız (int []) {...}. Bunu aslında yukarıdaki bitmask dizisi için de kullanıyoruz.

  1. Kapatma braketleri

Dizilerimizi veya fonksiyonlarımızı kapatmak için ']' veya '}' kullanamayız. Neyse ki C'nin işe yarayan digrafları ve trigrafları var. :>olacak ], süre ??>olacak }. Bu, -trigraphsvarsayılan olarak trigrafları göz ardı ettiği için (standardın ihlali) gcc'nin anahtarını almasını gerektirir .

  1. Bitsel işlemler

Biz kullanamaz &dizinimizin kapalı bitleri maskelemek için, ne de kullanabilirsiniz %orada eski yöntemle elde etmek. Bu nedenle uygulamaya özel davranışa güveniyoruz. Özellikle, 32-bit tam sayılarımızı bit kaybedecek kadar sola, sonra sağa kaydırıyoruz. Örneğin, sayımızın son 5 bitini elde etmek için önce 27 bit sola kaydırıyoruz (ayrılıyor abcde00000...), sonra 27 bit (bırakarak ) sağa kaydırıyoruz ...00000abcde.

  1. Çeşitli değerler

Kod boyunca birkaç gerçek değere daha ihtiyacımız var - bunlar Arnauld'un JS yanıtından alınır, artı 27 (yukarıdaki nedenle) benim tarafımdan eklenir 9+9+9.

3. Bir araya getirmek

İşte tüm bu değişikliklerin birlikte kaynağın açıklaması.

main(_){                // This is our main entry point
--_<88+80+88            // This subtracts 1 from the argument (_) and checks if it is less than 256
    ?                   // If it is less than 256 we 'continue'
printf(                 // first we call printf with...
    (int[:>){           // An integer array that will be interpreted as a string
    77707-989908070     // With the value we determined above, to represent "%c\0\xC5"
    ??>,                // This is a trigraph for }, just as the :> above is a digraph for ]
    ((int[:>){          // We immediately create another integer array
0xE8E8C79E^0xB0B0080,   // Each row is the bit-mask for 32 characters
0xC07E0870^0xE0000C00,
0xCC08099C^0xEE0C008E,
0xE8888989^0xCC00808,
0x9E088990^0x800C0000,
0x990C8888^0x080ECC00,
0xF9C7a088^0x080000C0,
0x9F8C78F8^0x900000??>
[_>>(0xC^0x9):>         // This is {arr}[_>>5] just in a roundabout way
>>(_<<9+9+9>>9+9+9))    // Similarly this is (...)>>(_&0x1F)
<<(70^89)>>(70^89)      // This is <<31>>31 or &1, to check the last bit
?_:' ')                 // If its 1, we print the character, otherwise we print a space
,main(_+9-7):0;         // We recurse, the :0 is the other branch of the if, it terminates execution
??>

İyi iş! Çok güzel bir açıklama. (% 100 değilim, ancak başlığın "C (gcc) -trigrafları" okuması gerektiğine inanıyorum)
Jonathan Allan

1
Tartışmaya hazır. Kod gcc'ye özgü değildir, tamamen standartlara uygun kod değildir, ancak makinem cc'de hiçbir argüman olmadan iyi derler. TIO'da varsayılan olarak standarda uyan yerleşik bir derleyici yoktur, (veya daha eski bir gcc derlemesi) varsa, trigraflar sadece uyarı oluşturur.
LambdaBeta

G ++ ?:uzantısını kullanarak , bitwise shift modulo 32, 273 bayt
user202729

Zekice. Ancak bu sürüm -trigraphsbazı C derleyicilerinde seçenek ?:gerektirmediği için olduğu gibi tutacağım , gereken gcc gerektirir -trigraphs.
LambdaBeta

6

brainfuck , 635 bayt

++++++++++++++++++++++++++++++++.>+.+.+.+.<...>++++.+.+.<...>++++.+.+.+.<...>++++.+.+.+.+.<...>++++.+.+.+....++++.+.+.<...>++++.<......>+++++++.+.+.+.+.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<......>+++++++.<...>++++.<..>+++.<......>+++++++.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.+.+.<....>+++++.<..>+++.+.<..>+++.<...>++++.<..>+++.<......>+++++++.+.+.+.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<...>++++.<..>+++.<...>++++.<..>+++.<......>+++++++.<.>++.+.+.+.<...>++++.+.+.<...>++++.+.+.+.<...>++++.+.+.+.+.<...>++++.+.+.+.<...>++++.+.+.<...>++++.+.+.+.+.<..>>-.

Çevrimiçi deneyin!

Sonunda Javascript tarafından dayak yanıt olarak, ben bu ne olabilir golf:

1 bayt, 0 hücresinde 32 olması ve hücre 1'in artmasıyla kurtarıldı (başlangıçta başka bir şekilde yapmamın tek nedeni OrjanJohansen'ın kullanamayacağımı belirttiğinde hızlı bir düzeltme nedeniyle ])

Üretmek için üçüncü bir hücreyi (başlangıçta 0'da) azaltarak 1 bayt 255=-1

Kullanmadan 31 ve 36 karakterleri arasındaki boşlukları yazdırmak <>yerine 31'den 33'e yükseldiğinde 0 hücresinden yazdırmak için 32'de durmakla 2 bayt kaydedildi .

brainfuck , 639 bayt

>++++++++++++++++++++++++++++++++.<+.+.+.+.>...<++++.+.+.>...<++++.+.+.+.>...<++++.+.+.+.+.>...<++++.+.+.>....<+++++.+.+.>...<++++.>......<+++++++.+.+.+.+.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>......<+++++++.>...<++++.>..<+++.>......<+++++++.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.+.+.>....<+++++.>..<+++.+.>..<+++.>...<++++.>..<+++.>......<+++++++.+.+.+.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>...<++++.>..<+++.>...<++++.>..<+++.>......<+++++++.>.<++.+.+.+.>...<++++.+.+.>...<++++.+.+.+.>...<++++.+.+.+.+.>...<++++.+.+.+.>...<++++.+.+.>...<++++.+.+.+.+.>..<+++.

Çevrimiçi deneyin!

İlk önce 32 sayısını üretiyoruz. Sonra sadece bir hücreyi artırıp baskıyı o hücre ile 32 içeren hücre arasında değiştiriyoruz.

Javascript'i Brainfuck ile yenmek güzel, sık sık olmaz!


Üzgünüz, ]izin verilen bir karakter değil. Yine de bunu düzeltip Javascript'i yenebilmelisiniz. :)
Ørjan Johansen

@ ØrjanJohansen sabit
Level River St

Üzgünüz, Javascript'i kaybettiniz.
user202729

@ user202729 oldukça iyi! Yine de, Javascript'i 3 gün boyunca dövdüm. Döngüler kullanamadığım ]için izin verilmediğinden, BF cevabımın muhtemelen en uygun olduğunu düşünüyorum.
Level River St

5

JavaScript (SpiderMonkey) , 1918 1598 1487 1431 bayt

@ User202729 sayesinde 56 bayt kaydedildi

print(8<<98,7/7,9-7,7>>97,8>>97,8<<98,8<<98,8<<98,8,9,0xa,8<<98,8<<98,8<<98,0xe,0xf,7+9,8+9,8<<98,8<<98,8<<98,7+0xe,7+0xf,8+0xf,9+0xf,78^87,8<<98,8<<98,8<<98,77^80,70^88,70^89,8<<98,8<<98,8<<98,8<<98,9<<98,70^99,77>>97,8<<98,8<<98,8<<98,98-070,8<<98,8<<98,8<<98,8<<98,8<<98,8<<98,9^070,80^98,80^99,87^99,87^98,9^077,8<<98,8<<98,8<<98,8<<98,8<<98,8<<98,70-9,8<<98,8<<98,8<<98,7^70,8<<98,8<<98,9^77,8<<98,8<<98,8<<98,7^79,8<<98,8<<98,70^0xd,((8<<98)+' ').repeat(8^0xe)+(8^90),((8<<98)+' ').repeat(8^0xe)+89,8<<98,8<<98,8<<98,7^90,8<<98,8<<98,7+89,((8<<98)+' ').repeat(8^0xe)+(7|97),7+97,((8<<98)+' ').repeat(8^0xe)+(77|98),8<<98,8<<98,8<<98,80|99,8<<98,8<<98,8^0x7e,8<<98,8<<98,8<<98,0x7a,8<<98,8<<98,0x7d,0x7e,0x7f,8<<98,8<<98,8<<98,8<<98,7+0x7d,8<<98,8<<98,0x87,0x88,8<<98,8<<98,0x8b,8<<98,8<<98,8<<98,0x8f,8<<98,8<<98,7+0x8b,((8<<98)+' ').repeat(8^0xe)+0x99,0x9a,0x9b,0x9c,((8<<98)+' ').repeat(8^0xe)+(7+0x9c),8<<98,8<<98,8<<98,0xa7,8<<98,8<<98,0xaa,8<<98,8<<98,8<<98,0xae,8<<98,8<<98,78+99,((8<<98)+' ').repeat(8^0xe)+0xb8,8<<98,8<<98,8<<98,0xbc,8<<98,8<<98,0xbf,8<<98,8<<98,8<<98,97+98,8<<98,8<<98,99+99,((8<<98)+' ').repeat(8^0xe)+0xcd,8<<98,0xcf,0xd0,7+0xca,7+0xcb,8<<98,8<<98,8<<98,7+0xcf,0xd7,0xd8,8<<98,8<<98,8<<98,0xdc,0xdd,0xde,0xdf,8<<98,8<<98,8<<98,7+0xdc,7+0xdd,7+0xde,7+0xdf,0xe7,8<<98,8<<98,8<<98,0xeb,0xec,0xed,0xee,8<<98,8<<98,8<<98,7+0xeb,7+0xec,7+0xed,8<<98,8<<98,8<<98,0xf8,0xf9,0xfa,0xfb,0xfc,8<<98,8<<98,0xff)

Çevrimiçi deneyin!

Nasıl?

Aslında =izin verilmeyen JS gösterişten katil. Değişken ataması yapamayız ve ayrıca ok işlevi de kullanamayız.

0789+-/|^<<>>

  1 = 7/7     |   50 = 80^98   |  136 = 0x88    |  216 = 0xd8
  2 = 9-7     |   51 = 80^99   |  139 = 0x8b    |  220 = 0xdc
  3 = 7>>97   |   52 = 87^99   |  143 = 0x8f    |  221 = 0xdd
  4 = 8>>97   |   53 = 87^98   |  146 = 7+0x8b  |  222 = 0xde
  8 = 8       |   54 = 9^077   |  153 = 0x99    |  223 = 0xdf
  9 = 9       |   61 = 70-9    |  154 = 0x9a    |  227 = 7+0xdc
 10 = 0xa     |   65 = 7^70    |  155 = 0x9b    |  228 = 7+0xdd
 14 = 0xe     |   68 = 9^77    |  156 = 0x9c    |  229 = 7+0xde
 15 = 0xf     |   72 = 7^79    |  163 = 7+0x9c  |  230 = 7+0xdf
 16 = 7+9     |   75 = 70^0xd  |  167 = 0xa7    |  231 = 0xe7
 17 = 8+9     |   82 = 8^90    |  170 = 0xaa    |  235 = 0xeb
 21 = 7+0xe   |   89 = 89      |  174 = 0xae    |  236 = 0xec
 22 = 7+0xf   |   93 = 7^90    |  177 = 78+99   |  237 = 0xed
 23 = 8+0xf   |   96 = 7+89    |  184 = 0xb8    |  238 = 0xee
 24 = 9+0xf   |  103 = 7|97    |  188 = 0xbc    |  242 = 7+0xeb
 25 = 78^87   |  104 = 7+97    |  191 = 0xbf    |  243 = 7+0xec
 29 = 77^80   |  111 = 77|98   |  195 = 97+98   |  244 = 7+0xed
 30 = 70^88   |  115 = 80|99   |  198 = 99+99   |  248 = 0xf8
 31 = 70^89   |  118 = 8^0x7e  |  205 = 0xcd    |  249 = 0xf9
 32 = 8<<98   |  122 = 0x7a    |  207 = 0xcf    |  250 = 0xfa
 36 = 9<<98   |  125 = 0x7d    |  208 = 0xd0    |  251 = 0xfb
 37 = 70^99   |  126 = 0x7e    |  209 = 7+0xca  |  252 = 0xfc
 38 = 77>>97  |  127 = 0x7f    |  210 = 7+0xcb  |  255 = 0xff
 42 = 98-070  |  132 = 7+0x7d  |  214 = 7+0xcf  |
 49 = 9^070   |  135 = 0x87    |  215 = 0xd7    |

32

Let shiftCount hepsini maskeleme sonucu ancak en önemli 5 bit olmak rnum olduğunu, hesaplama rnum & 0x1F.

8<<988<<232


32olarak 8<<9-7her biri için bir bayt kaydeder 32.
TFeld

1
32 = 8<<98982(şık32)

3
"show-killer" veya "fun-maker" mı?
Jonathan Allan

2
@JonathanAllan ;-) İkincisi eskisinden çıkar!
Arnauld

Aptal olduğum için üzgünüm, ama neden SpiderMonkey'in eski bir sürümüne bağlanıyorsun?
Solomon Ucko

4

Haskell'in 623 617 614 594 360 342 bayt

Düzenleme: Dize olarak bir kodlama modeli bularak @Lynn sayesinde -234 bayt. @ Ørjan Johansen sayesinde -18 bayt.

map(\i->cycle(8+8+8+8:filter(\_->" XXXX   XXX   XXXX   XXXXX   XXX    XXX   X      XXXXXX      X   X  X   X  X      X      X   X  X      XX      X   X  X   X  XXX    X  XX  X   X  X      XXXX      X   X  X   X  X      X   X  X   X  X      X XXXX   XXX   XXXX   XXXXX   XXXX   XXX   XXXXX  X"!!i>' ')(pure i))!!9)(take(0xf8+8)(iterate(9-8+)0))

Çevrimiçi deneyin!

Nasıl çalışır

map(\i->    )                   -- map the lambda over the
        (take(0xf8+8)           -- first 256 elements of
           (iterate(9-8+)0))    -- the list [0,1,2,....]

                                -- the lambda is:

    cycle                       -- make an infinite list by repeating the list
      8+8+8+8:                  -- wih element 32 followed by
                  pure i        -- the singleton list with 'i'
       filter                   -- but keep 'i' only if
          \_->" XXXX..."!!i>' ' -- the pattern has an 'X' at index 'i', else
                                -- remove it to make an empty list
                                -- i.e. the cycled list is, if the pattern is
                                -- a space: [32,32,32,32,32,32,32,32,32,32,...]
                                -- an 'X':  [32, i,32, i,32, i,32, i,32, i,...]
                                --                                       ^
                                --                        9th element ---/ 
                      !!9       -- pick the 9th element which is the result
                                -- of the lambda

3
Sen endeksi can (id:pure(\_->8+8+8+8))ile until((||" XXXX XXX XXXX XXXXX XXX XXX X XXXXXX X X X X X X X X X XX X X X X XXX X XX X X X XXXX X X X X X X X X X X X XXXX XXX XXXX XXXXX XXXX XXX XXXXX X"!!i<'X').(<1))pred 1 ve bayt bir demet tasarruf.
Lynn

1
342 byte ile filteryerine untilşubesine (ve cyclebir ekstra önlemek için ++pure(...)).
Ørjan Johansen

3

Beyin-Flak -r, 4190 4188 bayt

(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())())())())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())())())()<((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))>()()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())())())())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())()<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()())()<(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())>())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())()<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()())())())())())()<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()())

Çevrimiçi deneyin!

Kullandığımız olamaz çünkü bu bir Beyin-flak için biraz zor ]ya }. Anlamı sadece yararlı karakterler vardır <>().

İşte bunu yazmama yardımcı olan bir Haskell programı

Sadece alanların olması gereken yerlerde atlamayı ve bunları tek tek itmeyi sayar.


Bu uygun bir şekilde optimal mi?
user202729

@ user202729 Bundan şüpheleniyorum. Gerçi olabilir. Bir ton kıpır kıpır oda yok ama bunun en uygun olduğunu kanıtlamaktan çok uzaktayım . Her ne kadar {}bir bilgisayar aramamıza sahip olmadığımızdan sonlu zamanda gerçekten en uygun olanı bulabiliriz.
Ad Hoc Garf Hunter

En uygun çözümü üreten bir program yazıyorum, ancak beklediğimden biraz daha yavaş. İ Yine de çalışacak kadar hızlı.
user202729

@ user202729 Pek uygun değildi. Daha kısa bir tane buldum.
Ad Hoc Garf Hunter

3

JavaScript (SpiderMonkey'i) , 1001 919 789 441 bayt

print(/u/.exec().map.call('0777700077700077770007777700077700007770007000000777777000000700070070007007000000700000070007007000000770000007000700700070077700007007700700070070000007777000000700070070007007000000700070070007007000000707777000777000777700077777000777700077700077777007',''.repeat.bind(Number)).map(/u/.exec().find.bind(/()/.exec().fill(Number.bind(0,88-070)).fill(/u/.exec().fill,!0),''.indexOf)).map(Map.call.bind(Map.call)))

Çevrimiçi deneyin!

Sonunda BF yener !!!

Genel fikir

Uzun dize dizesinin her karakterini dizinine veya 32 değerine dönüştürün, değere bağlıdır.

Array.prototype.map? Dizi nasıl alınır

Nesne özelliklerine erişerek hangi nesnelerin erişilebilir olduğunu görmek için kaba kuvvet (çünkü ]izin verilmez, bu nedenle yalnızca bir tanımlayıcıyla eşleşen ada sahip özelliklere erişilebilir).

RegExp.prototype.execeşleşme olduğunda dizi benzeri bir nesne döndürür. Herhangi bir bağımsız değişken sağlanmadığında, bağımsız değişken varsayılan olarak kullanılır undefined, bu nedenle /u/.exec()bir dizi ile eşleşir ve döndürür.

2 farklı karakterde 2 rastgele farklı değer elde edin

Sahip olmak istiyoruz (x,y)=>x=='0'?32:y, ama kullanamayız =.

Bunun yerine yapacağız

new Array(a)
    .map(x=>x=='0'?()=>32:function()this)
    .map((x,y,z)=>x.call(y,z))

mapDizeyi bazı işlevler üzerinde yapabiliriz , ancak =>buna izin verilmez, bu nedenle yalnızca birkaç işlev kullanılabilir. Bağlı thisve bazı bağlı argümanlar olabilir (bu yüzden forma sahiptir (x,y,z)=>pre_filled_function.call(pre,filled,args,etc,x,y,z))

Bir işlev listesi ( repeat exec bind create map indexOf replace fill find reduce filter findIndex call bind apply) düşündükten sonra , aşağıdaki işlevlerin kullanılacağına karar verdim (diğer tüm kombinasyonları düşündükten sonra)

  • repeat: sayı -> farklı dizeler.
  • find: thisArg -> dizi eşleşmesindeki ilk öğe.

Genel fikir:

[].map.call('07070707...', (x,y,z)=>[elem1,elem2].find(somefunction,x,y,z)

nerede somefunctiongördüğü thisargüman ( x) ve birinci argüman ( elem1veya elem2) ve eşleşip dönüşü.

Son ok işlevi yeniden yazılır [].find.bind([elem1,elem2],somefunction).

Dizi değişmezi

Bir dizi elde etmek için regex exec kullanabiliriz ve fillbu diziyi farklı değerlerle kullanabiliriz. Örneğin /()/.exec(), bir uzunluk-2 dizisi döndürür, sonra istediğimiz gibi doldurabiliriz.

Hangisine somefunctionihtiyacımız var?

Doğruluk / falsy değeri döndüren this(geri döneceğimiz 2 işlevden 1'i) ve ilk bağımsız değişkeni (bir dize veya dizi olmalıdır) döndüren birine ihtiyacımız var .

Bunun için kullandım indexOf- ilk argüman, argümanın bir öneki ise, falsy değerini döndürür this.

İşlev değişmezlerini temsil etme


1
açıklama sonunda tökezledi ve bir şube asılı rüzgarlar
Ørjan Johansen

2

TI-Basic (83 serisi), 578 bayt

8XFact8-ΔTbl
seq(X and XX≤8+8 or 8≤X and X≤Xmax or 7+7≤X and X<9+9 or 7+7+7≤X and X<8π or 9π<X and X<πXmax or 9 nCr 7≤X and X+X<77 or X=7²-7 or 7²≤X and X≤7*9-9 or X=70-9 or X=8²+ΔTbl or X=78-Xmax or X=9*8 or X=89-7-7 or X=89-7 or X=89 or X=900-807 or X=88+8 or 809-707<X and X≤97+77-70 or 9X=999 or 8X=990-70 or X=888-770 or X=899-777 or 8*7+77-8≤X and X+X<Ans or 7²X/77=77+7 or 999+77<8X and 7X<970-9-7 or 8²X=8888+8 or X+X=99+99+88 or 7X=9099-8077 or 9+8≤X/9 and X<997-770-70 or X=99+8² or X=87+80 or X=80+90 or X=87+87 or X=87+90 or X=87+97 or X=98+90 or X=999-808 or X=97+98 or X=99+99 or X=99+99+7 or 9²8<πX and X+X+X≤70*9 or 70π-π-π<Xand X+X+X≤9²8 or 70π<X and X<70π+π or 997-770≤X and X+X+X≤99*7 or 77+79+79≤X and X+8+9≤Ans or 77π<X and X<Ans-Xmax or 7*8*9-8≤X+X and X+X≤7*8*9 or X=Ans,X,0,Ans
8XFact+Ansseq(X,X,⁻8XFact,70π+π

TI-Basic boşluk karakterinin 0x29'a taşınması gibi garip tasarım seçenekleriyle kendi çok özel bir "kod sayfası" na sahiptir, böylece 0x20 randM(komut olabilir.

TI-Basic'in doğru türden nesnelerin çıktısını nasıl alacağını bulmak zor. Dizeler birden fazla nedenden dolayı çalışmaz: jetonu kullanmadan bir jetona başvurmanın bir yolu yoktur ve ayrıca "karaktere izin verilmez . Çünkü sadece, bir liste yazamaz {ve }yasaktır. Matrisler için [ve ]karakterlerine izin verilir , ancak 1'den 256'ya kadar matris çalışmaz, çünkü matrislere en fazla 99 satır ve sütuna izin verilir. Değişkenlere atamak için kullanamayız ve liste değişkenlerine ʟveya herhangi bir L₁şekilde L₆giremeyiz.

Burada, bir karakterin çıktısını almak istediğimiz karakterlerden biri olduğunu söyleyen eşitsizliklerle karmaşık bir mantıksal formül yazıyoruz. Sonra bu konumlarda ve başka yerlerde seq(bir liste oluşturmak için komutu kullanırız . Oradan, başka bir komut ve bazı aritmetik işi bitirir.10seq(

Heyecan verici kısım buydu; geri kalanı sabitleri golf ve muhtemelen mümkün olduğunca yapmadım. Kullandığım hilelerden biri, varsayılan Xmaxolarak 10, XFact4 ve ΔTbl1 olmasıdır.


1 * 256 matris çalışmazken, 3 * 99 matris gibi bir şey yapabilir ve matrisi indekslemek için div / mod'u kullanabilir misiniz?
user202729

Oh, biz de şeyleri endeksleyemeyiz, çünkü (yasaktır.
Misha Lavrov

Koşullu ifade (eğer o zaman başka bir c ise) veya kat veya mod var mı? Sayı hassasiyeti ~ 15 ondalık basamak doğru mu?
user202729

Bunların hepsi var. Sadece bir matris girişine giremeyiz [A](I,J)ve anladığım kadarıyla [A](int(I/99),I-99int(I/99))matrisin tüm öğelerini okumak gibi bir şey yapmak istiyorsunuz [A]- bunu da yapamayız. (Bu arada, )aynı zamanda yasaktır. Neyse ki, biten parantezleri kapatmak zorunda değiliz, ancak birçok komutu nasıl kullanabileceğimizi sınırlar.)
Misha Lavrov

Bitmask benzer bir dizi kodlamak için bir sayı kullanmayı düşünüyorum. Python'da (123456789 >> X) ve 1 gibi.
user202729

1

Beyin-Flak -r, 3894 bayt

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())<((())((()())()))>)))(((((((()()()()()()()())(()()()()()()()()())(()()()()()()()()()())()()()()())))<((((((((()()()()()()()()()()()()()())((((((((((()()()()()()()()()()()()()()())((()()()()()()()()()()()()()()()())()))))<((((((((((((()()()()()()()()()()()()()()()()()()()()())())())())())()()()()()()())))<((((((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()())())())()))))()()()())())())>)))()()()()()()()()()())>))))))()()())())())())())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())>)))())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())())())<((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))>()()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())())())())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())<((((((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))))))>()()()()()()())<(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())>()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())<(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))>()()()())())())())())<((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()))>()()())

Çevrimiçi deneyin!

Herhangi bir çıktı için en uygun Brain-Flak programını oluşturmak için bir program yazdım. Varsayın:

  • <> Kullanılmıyor
  • Programım doğru

, o zaman bu çözüm en uygunudur.

Ö(n5)


1

Python 2 , 162156 bayt

Uyarı : Yazdırılamayan karakterler önde!

print map(lambda(i,x):(x>'0'and i-0xe0/7)+0xe0/7,enumerate(bin(reduce(lambda x,y:(x<<0xd-7)-x+y,bytearray('7?QcZ;+BqiQJUS!?B0W![<LBU7X!frQd(SQdB\0')))))

Çevrimiçi deneyin!

TFeld'in mevcut cevabına dayanarak birkaç değişiklikle:

A , yinelenebilir olmasına bytearraybenzer str, ancak yinelemek karakter değil tamsayı verir. Bir base-N değişmezini kodlamak için kullanabiliriz vereduce(lambda x,y: x*N+y, my_bytearray) kodunu çözmek için kullanabiliriz.

Python 2 dosyalarının varsayılan olarak kodlaması olmadığından, yalnızca ASCII'deki (0..127) karakterler kullanılabilir. Boş bayt, yeni satırlar, ters eğik çizgiler ve tırnak işaretleri 1 bayt daha alır.

Ayrıca, tüm üsleri kullanmak mümkün değildir.

Bu kısıtlamalar göz önüne alındığında , en kısa temsilini bulmak için bir program yazdım n.

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.