Kotor dan Unik


26

Dalam pertanyaan ini saya akan berbicara tentang program sebagai string, ini adalah string byte, bukan karakter. Bagaimana program hasil Anda ditampilkan atau ditampilkan tidak penting untuk tantangan ini, hanya bagaimana hal itu muncul dalam masalah memori.

Sebuah program yang murni adalah sebuah program yang ketika dijalankan tidak kesalahan, namun akan error setiap kali substring terus menerus ukuran , di mana, dihapus.S1 n < | S |n1n<|S|

Program kotor adalah kebalikannya, itu adalah program yang ketika dijalankan melakukan kesalahan, namun setiap kali substring terus menerus dari ukuran , di mana, dihapus, tidak salah.S1 n < | S |n1n<|S|

Untuk tantangan ini kesalahan adalah output non-kosong ke STDERR.

Tantangan Anda adalah menulis program kotor yang menggunakan sebanyak mungkin byte unik. Ini berarti Anda akan mendapatkan satu poin untuk setiap byte unik yang muncul dalam kode Anda dengan skor yang lebih besar menjadi lebih baik. Skor maksimumnya adalah 256.


Apakah mungkin untuk menjawab ini dalam bahasa yang melibatkan tanda kurung / tanda kurung? Dimungkinkan untuk menghapus beberapa substring dari kode sehingga akan ada tanda kurung yang tidak cocok.
JungHwan Min

@JungHwanMin Jika bahasa memberlakukan tanda kurung yang seimbang, saya curiga itu tidak mungkin.
Wheat Wizard

@CatWizard sehingga program kotor tidak kesalahan ketika substring karakter terus menerus (yaitu tidak set byte berkelanjutan) dihapus, benar
JungHwan Min

@JungHwanMin Maaf. Mungkin atau mungkin tidak. Kami hanya peduli dengan string yang berkelanjutan.
Wheat Wizard

Jawaban:


18

Unary , 14 byte

123456789ABCDE

Ini mengkodekan program brainfuck [, yang kesalahan karena tanda kurung yang tidak cocok.

Menghapus byte akan menghasilkan >, <, +, -, ., ,atau program kosong, yang merupakan program brainfuck valid.


Ini adalah solusi optimal, karena solusi yang lebih lama dapat dikurangi menjadi solusi ini, yang salah
Jo King

Ini juga satu-satunya solusi.
user202729

13

R , 3 byte

qrt

Cobalah online!

Nama objek adalah program yang valid dalam R.

qrt bukan nama apa pun, jadi ia mengembalikan kesalahan.

q adalah fungsi berhenti

qr adalah fungsi dekomposisi QR

rt adalah fungsi sampling distribusi t

qt adalah t distribusi terbalik CDF

t adalah fungsi transpose


2
@pajonk tetapi "r" adalah substring yang berkelanjutan. Menghapus yang meninggalkan "qt"
Orphevs

3
Tepat ada satu program kotor dalam R panjang 3, dan ini dia! (program hanya berlaku satu Char adalah 0-9cqtCDFIT, oleh karena itu setiap program harus dimulai dengan cm, qf, qr, qt, tsatau Im. Panjang tiga kemungkinan yang qrf, qrm, qrt, qtsdan tsddan hanya salah satu dari ini kotor (yang lain tidak dapat diperpanjang baik untuk membuat kotor mereka karena tidak ada fungsi rm*, rf*, ts*, sd*)
JDL

@Orphevs salahku, salah membaca tantangan.
pajonk

10

Jelly , 4 5 6 7 8 10 11 byte

“a”;⁽PFð+µU

Cobalah online!

Verifikasi itu.

Mencoba menambahkan string dengan integer.

Beberapa subprogram yang mungkin:

“a” adalah string literal.

“a adalah string literal yang sama.

adalah string kosong.

“a”; menggabungkan "a" dengan dirinya sendiri.

... terlalu banyak untuk menyebutkan semuanya.


1
Untungnya Jelly masih memungkinkan Anda untuk melakukan kesalahan.
user202729

6

Polyglot, 3 byte

1 2

Bekerja di:

  • JavaScript
  • Rubi
  • R
  • Oktaf
  • GHCi
  • Julia

Dalam JavaScript, melempar SyntaxError: tak terduga: literal numerik atau kesalahan serupa.

Semua string lainnya adalah literal angka yang valid ( 1 , 2 , atau 12 ).


Di GHCi ini melempar

<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

Hal ini karena mencoba untuk menerapkan 1untuk 2sebagai fungsi, namun tidak bisa. Ketika ada bagian dari ini dihapus itu hanya menjadi numerik literal.


Polyglot: R, Oktaf, Ruby, ular sanca ...
ngm

1
@ ngm GHCi juga, namun `2` kesalahan dalam python.
Wheat Wizard

Saya curiga itu sangat generik. Saya telah mengubah ini menjadi wiki komunitas, jadi silakan mengedit dengan semua bahasa yang berfungsi!
Arnauld


5

Python 2/3 , 3 byte

4\f2

ATAU

4\x0c2

Cobalah online!

Dalam python "\ f" sama dengan "\ x0c" dan merupakan karakter umpan formulir . Ini berarti bahwa ini mengindikasikan printer untuk pergi ke baris berikutnya.

Jika ekspresi python dimulai atau diakhiri dengan \f, pada dasarnya diabaikan begitu \f2juga ekspresi yang valid.

The 4dan 2dapat sejumlah 0-9. Namun, untuk byte pertama 0yang hanya berlaku di Python 2.7.15, seperti 02yang dibuat deklarasi hukum 2.

Jadi ekspresi itu sendiri gagal dengan Kesalahan Sintaks, karena ada dua angka yang dipisahkan oleh spasi. Namun, setiap pemendekan baik menempatkan \fdi awal atau akhir, di mana itu tidak masalah, atau itu menciptakan 42yang valid.

(Perlu dicatat bahwa dalam IDLE file ini terbuka tampak seperti "42".)

Sumber penjelasan umpan formulir: /programming//a/26184126


3
Ini akan lebih mudah dimengerti jika Anda menggunakan kode aktual di sumber tanpa \f. Ini adalah tautan online coba yang dapat digunakan untuk mendapatkan jawaban yang telah diformat sebelumnya.
Wheat Wizard

1
Saya telah menambahkannya sebagai varian untuk klarifikasi. Juga, terima kasih atas saran tautannya.
The Matt

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.