Pis ve Eşsiz


26

Bu soruda, programlar dizge olarak konuşacağım, bu karakter dizisi değil, bayt dizisidir. Elde ettiğiniz programın nasıl gösterildiğini veya görüntülendiğini bu zorluk için önemli değil, sadece bellek konularında nasıl göründüğü önemlidir.

Bir bozulmamış programı bir programdır çalıştırma değil hatası yaptığında, ancak hatasız çalışacağını zaman sürekli bir boyutta alt dize , nerede, kaldırıldı.n 1 < n < | S |Sn1n<|S|

Pis programı, bu program tersidir o run zaman yapar hatası, ancak her kesintisiz boyutta alt dizeyi , nerede, kaldırıldı, hata vermiyor.n 1 < n < | S |Sn1n<|S|

Bu zorluk için bir hata STDERR'ye boş olmayan çıktıdır.

Buradaki zorluk, mümkün olduğu kadar çok sayıda benzersiz bayt kullanan kirli bir program yazmak. Bu, daha büyük bir skorun daha iyi olmasıyla kodunuzda görünen her bir bayt için bir puan alacağınız anlamına gelir. Böylece maksimum puan 256 olur.


Bunu parantez / parantez içeren dillerde cevaplamak mümkün mü? Bazı alt dizgileri koddan kaldırmak, böylece uyumsuz parantezler almak mümkün olabilirdi.
JungHwan Min,

@JungHwanMin Eğer dil dengeli parantezleri uygularsa, imkansız olacağını düşünürdüm.
Buğday Sihirbazı

@CatWizard böylece sürekli bir karakter alt dizesi (yani sürekli bayt dizisi değil ) çıkarıldığında pis bir program hata yapmaz, değil mi?
JungHwan Min,

@JungHwanMin Üzgünüm. Olabilir ya da olmayabilir. Sadece sürekli dizeleri önemsiyoruz.
Buğday Sihirbazı,

Yanıtlar:


18

Unary , 14 bayt

123456789ABCDE

Bu, eşleştirilmemiş [parantezler nedeniyle hata yapan beyin fırtınası programını kodlar .

Çıkarma bayt neden olur >, <, +, -, ., ,veya geçerli brainfuck programlardır boş programı.


Bu en uygun çözümdür, çünkü daha uzun bir çözüm bu çözüme indirgenebilir, bu da hata yapar
Jo King

Bu da tek çözüm.
user202729

13

R , 3 bayt

qrt

Çevrimiçi deneyin!

Bir nesnenin adı R'deki geçerli bir programdır.

qrt hiçbir şeyin adı değildir, bu nedenle bir hata döndürür.

q çıkma işlevi

qr QR ayrıştırma işlevi

rt dağıtım örnekleme işlevi nedir?

qt t dağıtım ters CDF'si

t devrik işlevi nedir


2
@pajonk ama "r" sürekli bir alt dildir. Çıkarma "qt" bırakıyor
Orphevs

3
R uzunluğu 3'te tam olarak bir tane kirli program var ve işte bu! (sadece tek karakter geçerli programlardır 0-9cqtCDFITherhangi bir program dolayısıyla başlamalı, cm, qf, qr, qt, tsveya Im. Üç olasılık vardır uzunluk qrf, qrm, qrt, qtsve tsdbu sadece bir pis (diğerleri ya uzatılamaz onları karışıklık yapmak hiçbir işlevleri gibi rm*, rf*, ts*, sd*)
JDL

@Orphevs benim kötü, meydan okuma yanlış.
pajonk

10

Jöle , 4 5 6 7 8 10 11 bayt

“a”;⁽PFð+µU

Çevrimiçi deneyin!

Doğrula.

Bir tamsayı ile bir dize eklemeye çalışır.

Olası alt programlardan bazıları:

“a” bir dize değişmezdir.

“a Aynı dize değişmezdir.

boş dizedir.

“a”; "a" yı bir araya getirir.

... hepsini saymak için çok fazla.


1
Neyse ki Jelly hala hata yapmanıza izin veriyor.
user202729

6

Polyglot, 3 bayt

1 2

Çalışır:

  • JavaScript
  • Yakut
  • R,
  • Oktav
  • GHCi
  • Julia

JavaScript’te, SyntaxError: unexpected token: sayısal değişmez veya benzer bir hata veriyor .

Diğer tüm dizeler geçerli sayısal değişmezlerdir ( 1 , 2 veya 12 ).


GHCi'de bu atar

<interactive>:1:1: error:
     Non type-variable argument in the constraint: Num (t1 -> t2)
      (Use FlexibleContexts to permit this)
     When checking the inferred type
        it :: forall t1 t2. (Num t1, Num (t1 -> t2)) => t2

O uygulamak dener olmasıdır 1için 2bir fonksiyonu olarak, ancak yapamaz. Bunun herhangi bir kısmı kaldırıldığında, basit bir sayısal değişmez haline gelir.


Polyglot: R, Octave, Yakut, piton ...
NGM

1
@ ngm GHCi de, ancak python'da `2` hata.
Buğday Sihirbazı,

Çok genel olduğundan şüphelendim. Bunu topluluk wiki'ye dönüştürdüm, bu yüzden bunun için çalıştığı tüm dilleri düzenlemek için çekinmeyin!
Arnauld,


5

Python 2/3 , 3 bayt

4\f2

VEYA

4\x0c2

Çevrimiçi deneyin!

Python'da "\ f", "\ x0c" ile aynıdır ve form besleme karakteridir. Bu, yazıcının bir sonraki satıra geçeceği anlamına gelir.

Bir python ifadesi başlar veya biterse \f, temel olarak yoksayılır, bu nedenle \f2geçerli bir ifadedir.

4Ve 2herhangi bir sayı 0-9 olabilir. Bununla birlikte, ilk bayt için 0yalnızca 02yasal beyanı yapıldığı üzere Python 2.7.15'te geçerlidir 2.

Bu nedenle, ifadenin kendisi bir Sözdizimi Hatası ile başarısız oluyor, çünkü boşlukla ayrılmış iki sayı var. Bununla birlikte, herhangi bir kısalma ya \fbaşında ya da sonunda, önemi olmayan ya da 42geçerli olanı yaratır .

(IDLE'de bu dosyanın "42" gibi görünmeye başladığını belirtmekte fayda vardır.)

Form beslemesi açıklama kaynağı: https://stackoverflow.com/a/26184126


3
Kaynaktaki asıl kodu kullanmadan kullanıp kullanmadığınızı anlamak daha kolay olacaktır \f. Burada önceden biçimlendirilmiş bir yanıt alabileceğiniz çevrimiçi bir bağlantı deneyin.
Buğday Sihirbazı,

1
Açıklama için bir değişken olarak ekledim. Ayrıca, link öneriniz için teşekkür ederim.
Matt

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.