Bowling Kode Asli dan Unik

82

Tantangan Anda sederhana: tulis selama program murni mungkin dalam bahasa pilihan Anda hanya menggunakan byte unik. (Definisi penuh dari program murni, disalin dari tautan itu, ada di bagian bawah pertanyaan ini.)

Itu benar, tidak ada ikatan. Kode Anda tidak perlu melakukan apa pun, jalankan tanpa kesalahan, memenuhi persyaratan untuk program yang masih asli (tertaut di atas), dan tidak menyertakan byte duplikat dalam pengkodean yang Anda gunakan.

Untuk keperluan penjelasan di atas dan definisi yang terhubung dari "program murni", kesalahan didefinisikan sebagai segala sesuatu yang menyebabkan program gagal seluruhnya berjalan atau berakhir dengan kode keluar yang tidak nol setelah waktu yang terbatas.

Karena ini , terpanjang , bukan terpendek, menang (diukur dengan jumlah byte). Skor maksimum yang dimungkinkan secara teoritis adalah 256, karena ada 256 byte berbeda yang mungkin. Dalam hal seri, jawaban pertama pada skor tertinggi menang.


Berikut definisi lengkap dari program murni, disalin dari tautan di atas:

Mari kita mendefinisikan program murni sebagai program yang tidak memiliki kesalahan itu sendiri tetapi akan kesalahan jika Anda memodifikasinya dengan menghapus substring N karakter yang berdekatan, di mana 1 <= N < program length.

Misalnya, program tiga karakter Python 2

`8`

adalah program murni karena semua program yang dihasilkan dari menghapus substring dengan panjang 1 menyebabkan kesalahan (kesalahan sintaks sebenarnya, tetapi semua jenis kesalahan akan dilakukan):

8`
``
`8

dan juga semua program yang dihasilkan dari menghapus substring panjang 2 menyebabkan kesalahan:

`
`

Jika, misalnya, `8telah menjadi program non- kesalahan maka `8`tidak akan murni karena semua hasil penghapusan substring harus kesalahan.

Aidan F. Pierce
sumber
37
Angkat topi untuk Anda karena berhasil menciptakan tantangan bowling kode yang bagus !
ETHproduksi
Jika suatu subprogram berjalan selamanya tetapi tidak kesalahan apakah itu membuat jawaban tidak valid?
dylnan
1
@dylnan "kesalahan didefinisikan sebagai [...] mengakhiri [...] setelah waktu yang terbatas ."
user202729
3
@ Bardrickk Tidak, itu tidak akan diizinkan untuk tantangan ini. (Jika Anda merujuk pada contoh dalam pertanyaan, ini merupakan demonstrasi dari apa program asli, tetapi yang tidak memenuhi persyaratan tambahan byte unik.)
Aidan F. Pierce
1
Bisakah kita menghitung perilaku yang tidak terdefinisi sebagai kesalahan jika dalam praktiknya biasanya menghasilkan kesalahan? Saya sedang memikirkan sesuatu seperti JMP <address outside of the program's memory>dalam pertemuan. Pada prinsipnya pada komputer sungguhan itu bisa berulang tanpa henti atau keluar dengan kesalahan tidak nol, tetapi biasanya macet secara spektakuler.
Chris

Jawaban:

23

Jelly , 253 254 256 byte

M“¢£¥¦©¬®µ½¿€ÆÇÐÑ×ØŒÞßæçðıȷñ÷øœþ !"#%&'()*+,-./0145689:;<=>?@ABCDEFGHIJKNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|~¶°¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ƁƇƑƓƘⱮƝƤƬƲȤɓƈɗƒɠɦƙɱɲƥʠɼʂƭʋȥẠḄḌẸḤỊḲḶṂṆỌṚṢṬỤṾẈỴẒȦḂĊḊĖḞĠḢİĿṀṄȮṖṘṠṪẆẊẎŻḅḍẹḥịḳḷṃṇọṛṣṭụṿẉỵẓȧḃċḋėḟġḣŀṁṅȯṗṙṡṫẇẋẏż”L»«’Ɗạ‘}237$¤¡

Cobalah online! atau verifikasi!

Ternyata bahasa golf dapat ...

  • +1 byte dengan bekerja di . Sekarang hanya «»tidak digunakan
  • +2 byte dengan with «». Sekarang miliki skor optimal!

Bagaimana?

Fitur penting Jelly yang memungkinkan ini adalah karakter pembuka dan penutup untuk string literal tidak sama seperti di hampir semua bahasa lainnya.

Struktur program adalah sebagai berikut:

M <239 character long string> L»«’Ɗạ‘}237$¤¡

Mmenemukan indeks argumennya yang menunjuk ke elemen maksimal. Yang penting adalah bahwa tanpa argumen untuk program ini, Jelly memberikan 0kesalahan rantai dan Jelly saat Mditerapkan 0.

Untuk mencegah Mdari bertindak 0dalam program penuh, kami menggunakan ¡cepat, yang berlaku Mbeberapa kali ditentukan oleh hasil tautan segera sebelum itu. Dalam hal ini tautan tersebut adalah <239 character long string> L»«’Ɗạ‘}237$¤.

Lmembutuhkan panjang string ini (239), dan »«’Ɗmengurangi ini menjadi 238. Bagian »«ini tidak melakukan apa pun kecuali Ɗ(tiga tautan terakhir sebagai monad) membuatnya sehingga jika dihapus, kesalahan akan terjadi. Kemudian mengambil perbedaan absolut antara hasil »«’Ɗdan monad yang ‘}237$diterapkan pada string. bertambah dan merupakan monad, tetapi }mengubahnya menjadi angka dua dan menerapkannya pada argumen yang benar 237, menghasilkan 238. Demikian hasil 0dalam program lengkap.

¤tautan kembali ke string literal membentuk nilad. Hasil dari ini adalah 0, jadi Mtidak diterapkan sama sekali, mencegah kesalahan.

Subprogram yang mungkin:

  • Jika ada bagian dari string yang dihapus, <string>..¤akan menjadi nol dan Mditerapkan 0, menyebabkan kesalahan.
  • Jika ada bagian L»«’Ɗạ‘}237$yang dihapus baik Makan diterapkan 0atau akan ada operasi antara string dan angka, menghasilkan a TypeError.
  • Jika ada ¤¡yang dihapus, Makan diterapkan ke 0.
  • Jika karakter penutup string dan keduanya ’‘dihapus dan tidak, semuanya Mberubah menjadi string sehingga Makan bertindak 0.
    • Jika karakter string penutup dan dihapus dan tidak, semuanya antara dan berubah menjadi daftar bilangan bulat.
  • Jika Msendirian dihilangkan ada a EOFErrorkarena ¡mengharapkan tautan sebelum nilad sebelumnya.
  • Jika M“dan sejumlah karakter setelah dihapus, akan ada EOFErrorkarena ¤mencari nilad yang mendahuluinya tetapi tidak menemukannya. 238tidak masuk hitungan karena itu bagian dari monad.

Ini cukup banyak mencakup semuanya.

Saya sebelumnya tidak menggunakan «»‘karena dua yang terakhir tidak dapat dimasukkan dalam string karena mereka cocok dengan karakter untuk membentuk hal-hal selain string. «tidak bisa dalam “”string baik tetapi saya tidak tahu mengapa.

dylnan
sumber
31

Haskell , 39 45 50 52 60 byte

main=do{(\𤶸	陸 ⵙߜ 新->pure fst)LT
EQ[]3
2$1}

Identifier mainharus memiliki tipe IO auntuk beberapa tipe a. Ketika program dieksekusi, perhitungan maindilakukan, dan hasilnya dibuang. Dalam hal ini tipenya adalah IO ((a,b)->a).

Hasilnya adalah aplikasi fungsi (λ a b c d e f → return fst), fungsi konstanta enam argumen mengembalikan fungsi pertama (yang memberikan elemen pertama dari 2-tuple), disuntikkan ke monad IO. Enam argumen yang LT(enum kurang dari), EQ(enum untuk kesetaraan), daftar kosong [], 3, 2dan 1.

Apa yang akan menjadi ruang diganti dengan karakter unik yang dihitung sebagai spasi: tab, ruang tanpa putus, formfeed, tab vertikal, OGHAM SPACE MARK, ruang reguler, baris baru dan carriage return. Jika ada yang hilang, akan ada ketidakcocokan dalam jumlah argumen. Nama parameter dipilih sebagai tiga atau empat byte UTF-8 karakter,, 𤶸陸ⵙ商ߜ新memilih karakter yang tidak menghasilkan duplikat byte.

Terima kasih kepada @BMO untuk kontribusinya yang berharga.

Hex dump:

00000000: 6d61 696e 3d64 6f7b 285c f0a4 b6b8 09ef  main=do{(\......
00000010: a793 c2a0 e2b5 990c e595 860b df9c e19a  ................
00000020: 80e6 96b0 2d3e 7075 7265 2066 7374 294c  ....->pure fst)L
00000030: 540a 4551 5b5d 330d 3224 317d            T.EQ[]3.2$1}

Cobalah online!

Angs
sumber
Hm, '\109999'tampaknya valid, setidaknya di GHC 8.2.2. '\10999a'menghasilkan kesalahan leksikal.
chepner
@ chepner: Saya baru saja menguji dengan GHC 8.2.2 dan 𚶯menghasilkan kesalahan leksikal juga.
ბიმო
2
@chepner: Char terbesar adalah maxBound :: Char, yaitu '\1114111'. Catatan: angka desimal secara default, jadi jika Anda ingin hex, Anda harus meletakkan xsetelah \ , misalnya '\x10999a'.
nimi
@nimi Aaaand saya pikir kami telah menetapkan seberapa sering saya benar-benar menggunakan Unicode escapes :) Menggunakan formulir yang benar untuk nilai hex, \x10ffffberfungsi dengan baik, dan \x110000memberikan kesalahan di luar jangkauan seperti yang diharapkan.
chepner
25

Python 2 ,  20 21 33 39 45  50 byte

Sekarang sangat banyak upaya kolaborasi!

+2 berkat Aidan F. Pierce (ganti sorted({0})dengan map(long,{0}))

+8 berkat dylnan (penggunaan \dan baris baru untuk mengganti spasi; saran untuk beralih dari 0ekspresi matematika; menggantikan -1dengan -True; penggunaan heksadesimal)

+11 terima kasih kepada Angs ( 4*23+~91-> ~4836+9*1075/2lalu nanti ~197836254+0xbCABdDF-> ~875+0xDEAdFBCbc%1439/2*6)


if\
map(long,{~875+0xDEAdFBCbc%1439/2*6})[-True]:q

Cobalah online! Atau lihat paket konfirmasi

0xDEAdFBCbcheksadesimal dan dievaluasi menjadi 59775106236.
~adalah komplemen bit-bijaksana sehingga ~875dievaluasi untuk -876.
%adalah operator modulo sehingga 0xDEAdFBCbc%1439dievaluasi untuk 293.
/adalah divisi integer jadi 0xDEAdFBCbc%1439/2dievaluasi untuk 146.
*adalah perkalian sehingga xDEAdFBCbc%1439/2*6dievaluasi menjadi 876.
+Selain itu jadi ~875+xDEAdFBCbc%1439/2*6mengevaluasi untuk 0.
... tidak ada versi yang dilucuti juga dievaluasi 0.

{0}adalah setelemen yang mengandung tunggal 0,.

Memanggil sorteddengan setsebagai argumen menghasilkan daftar, yang dapat diindeks dengan [...].

Tanpa sortedkode ({0})hanya akan menghasilkan setdan ini tidak dapat diindeks dengan cara yang sama, if({0})[-True]:qakan menaikkan a TypeError.

Pengindeksan dalam Python adalah berbasis 0 dan memungkinkan pengindeksan negatif dari belakang dan Truesetara dengan 1, karenanya sorted({0})[-True]menemukan elemen 0, sementara sorted({0})[True]akan meningkatkan sintaks IndexError, seperti yang akan sorted({})[-True]dan sorted({0})[]tidak valid.

The 0yang ditemukan adalah falsey sehingga tubuh if, q, tidak pernah dieksekusi, namun jika hal itu akan menaikkan NameErrorkarena qbelum didefinisikan.

Karena daftar yang tidak kosong adalah benar, kami juga tidak dapat memangkasnya if[-1]:q.

Lihat suite konfirmasi untuk melihat: konfirmasi byte menjadi unik; semua kesalahan; dan keberhasilan kode itu sendiri.

Jonathan Allan
sumber
17

C (tcc) , x86_64, 29 31 33 39 40 byte

main[]={(23*8),-~0xABEDFCfebdc%95674+1};

Pengembalian 0 . Terima kasih kepada @feersum karena menyarankan digit hex huruf besar.

Cobalah online!

Bagaimana itu bekerja

Tugas menulis dua int ( 184 dan 49664 ) ke lokasi memori utama . Dengan int 32-bit dan urutan bit-endian, byte yang tepat adalah b8 00 00 00 00 c2 00 00.

Karena tcc tidak mendeklarasikan array yang didefinisikan sebagai .data (kebanyakan kompiler akan), maka melompat ke main akan mengeksekusi kode mesin yang ditunjuknya.

  • b8 00 00 00 00( mov eax, imm32) menyimpan int 0 di register eax.

  • c2 00 00( ret imm16) muncul 0 byte tambahan dari tumpukan dan kembali. (Nilai dalam register eax adalah nilai pengembalian fungsi).

Dennis
sumber
TIO link menunjukkan kesalahan segmentasi untuk saya.
pppery
15

> <> , 122 byte

e"~l=?!z6-d0p}xwutsrqonmkjihgfcba`_]\[>ZYXWVUTSRQPONMLKJIHGFEDCB@<:98754321/,+*)('&%$# .	|{Ay

Cobalah online!

Tidak melakukan apa-apa. Berdasarkan format yang sama dengan jawaban saya Programming a Pristine World .

Pertama, kami memeriksa bahwa panjang kode adalah 122 dan kesalahan jika tidak. ><>program tidak dapat berakhir tanpa menggunakan ;perintah, tetapi jika perintah ini ada di program, kita bisa menghapus semuanya sebelum itu untuk membuat program berakhir dengan segera. Untuk mengatasi ini, kami menggunakan pperintah untuk menempatkan ;dalam kode selama runtime. Untuk melakukan ini, kita kurangi 6 dari Adan letakkan setelah p.

Saya mungkin akan menambahkan sebagian besar nilai-nilai lain di atas 127 setelah saya mengetahui nilai dua byte yang tepat. Nilai 5 yang hilang adalah v^;dan dua baris baru.

Dari 7502 sub-program, 7417 di antaranya kesalahan dari instruksi yang tidak valid, 72 dari kekurangan memori, dan 13 dari kehabisan memori.

Jo King
sumber
13

JavaScript, 42 byte

if([0XacdCADE*Proxy.length]!=362517948)田
  • Menghapus i,, fatau ifakan menyebabkan SyntaxError: missing ; before statement;
  • Menghapus akan menyebabkan SyntaxError: expected expression, got end of script;
  • Menghapus 1 atau 2 byte dari akan menyebabkan Invalid or unexpected token;
  • Mengubah ekspresi boolean akan menyebabkan Kesalahan Sintaks atau Referensi pada

00000000: 6966 285b 3058 6163 6443 4144 452a 5072  if([0XacdCADE*Pr
00000010: 6f78 792e 6c65 6e67 7468 5d21 3d33 3632  oxy.length]!=362
00000020: 3531 3739 3438 29e7 94b0                 517948)...

tsh
sumber
9

Brain-Flak , 2 byte

<>

Cobalah online!

Atau [],, {}atau (). Melepaskan salah satu braket menyebabkan braket lainnya menjadi tidak cocok.

Bukti bahwa ini adalah solusi optimal:

Program Brain-Flak terbuat dari nilads (sepasang kurung sendiri) atau monad (sepasang kurung berisi 1 atau lebih nilads). Monad tidak dapat berada dalam program murni, karena Anda dapat menghapus satu atau lebih dari nilad. Demikian pula, Anda tidak dapat memiliki lebih dari satu nilad dalam program, karena Anda dapat menghapus salah satu dari mereka tanpa merusak program.

Dengan demikian, ini mungkin bahasa yang paling tidak optimal untuk pemrograman murni atau unik.

Jo King
sumber
6

Ada, 110 byte (latin1)

Mungkin jawaban terbaik Anda akan keluar dari bahasa apa pun yang digunakan dalam industri?

Hexdump:

0000000: 7061 636b 4167 4520 6266 686a 6c6d 6f71  packAgE bfhjlmoq
0000010: 7274 7576 7778 797a e0e1 e2e3 e4e5 e6e7  rtuvwxyz........
0000020: e8e9 eaeb eced eeef f0f1 f2f3 f4f5 f6f8  ................
0000030: f9fa fbfc fdfe 0d69 730b 656e 6409 4246  .......is.end.BF
0000040: 484a 4c4d 4f51 5254 5556 5758 595a c0c1  HJLMOQRTUVWXYZ..
0000050: c2c3 c4c5 c6c7 c8c9 cacb cccd cecf d0d1  ................
0000060: d2d3 d4d5 d6d8 d9da dbdc ddde 3b0a       ............;.

Kompilasi dengan menyimpan ke file apa pun yang berakhir .adsdan berjalan gcc -c <filename>. Menghasilkan executable yang tidak melakukan apa-apa. (Tidak dapat memberikan tautan TIO karena TIO memasukkan kode ke dalam .adbfile dan gccsecara default mencoba menemukan spesifikasi yang cocok untuk mereka)

Pada dasarnya mendeklarasikan paket dengan nama huruf besar / huruf latin1 yang menyalahgunakan. Membutuhkan karakter spasi putih yang berbeda untuk masing-masing spasi, sehingga menggunakan spasi, CR, LF, dan TAB.

Bagaimana tampilannya dalam versi vim:

packAgE bfhjlmoqrtuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ^Mis^Kend^IBFHJLMOQRTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ;

Bagaimana itu bekerja

Di Ada bahkan spec dapat dikompilasi. Spec seperti file header c, tetapi lebih berfitur lengkap dan dapat mengkompilasi beberapa kode dasar. Agar valid, spesifikasi apa pun harus memiliki format: package <NAME> is ... end <NAME>;dengan <NAME>pencocokan. Yang menyenangkan tentang Ada adalah bahwa hal itu sepenuhnya case-sensitive. Jadi, selama nama Anda memiliki varian huruf besar dan kecil, Anda akan senang melakukannya!

Bagian yang sulit adalah mendapatkan unit yang dapat dikompilasi. Biasanya ada program yang memiliki prosedur atau fungsi 'utama' di luar paket apa pun yang akan menjadi executable akhir. Sayangnya prosedur memerlukan beginkata kunci, yang mengarah ke terlalu banyak e(hanya 2 kasus diketahui) sementara fungsi memerlukan returnkata kunci, yang mengarah ke terlalu banyak n. Jadi saya harus mengkompilasi sebuah paket.

LambdaBeta
sumber
5

C, 8 byte

main(){}

Tidak melakukan apa-apa.

Cobalah online!

Steadybox
sumber
1
Mungkin saya tidak mengerti tantangannya tetapi bagaimana denganmain(){short x;}
Jerry Jeremiah
@JerryJeremiah: tidak, main(){short;}kompilasi hanya dengan a warning: useless type name in empty declaration. Saya pikir C99 dan C ++ memerlukan tipe pengembalian eksplisit, jadi int main(atau mungkin unsigned main) bisa bekerja, tetapi tidak dengan gcc yang hanya memperingatkan bahkan dengan -std=c11.
Peter Cordes
@JerryJeremiah: a return 0;dimungkinkan dengan C89, di mana tidak ada implisit return 0di akhir main. Keluar dengan status bukan nol dapat dianggap gagal, menurut jawaban lain. Apakah menambahkan flag compiler seperti -Werrormenghitung skor dengan cara yang baik dalam bowling kode? Karena dengan tegas menegakkan pelanggaran C11 dapat memungkinkan program yang lebih lama. Hmm, #include<>sesuatu lalu gunakan; Anda tidak dapat menghapus keduanya termasuk dan penggunaan, dan jika crash tanpa prototipe atau makro def, Anda menang.
Peter Cordes
@PeterCordes Aku berpikir tentang itu, tapi maindan includekeduanya mengandung i, sehingga Anda tidak bisa memiliki keduanya. Demikian pula untuk mendeklarasikan dan menggunakan suatu fungsi. Juga menggunakan returnsama sekali dipikir-pikir.
Chris
oops, saya lupa tentang persyaratan byte unik; tentu saja int maintidak bisa.
Peter Cordes
4

JavaScript, 22 byte

with(0xF?JSON:[])parse

Cobalah online!

Kemungkinan kesalahan

Ketika diubah, itu akan melempar salah satu kesalahan berikut 1 :

[some_identifier] is not defined
expected expression, got ')'
expected expression, got ':'
expected expression, got '?'
expected expression, got ']'
expected expression, got end of script
identifier starts immediately after numeric literal
missing ( before with-statement object
missing ) after with-statement object
missing : in conditional expression
missing ] after element list
missing exponent
missing hexadecimal digits after '0x'
missing octal digits after '0o'
unexpected token: ')'
unexpected token: ']'
unexpected token: identifier

1. Jumlah pasti kesalahan berbeda tergantung pada mesin. Daftar ini dibuat dengan SpiderMonkey (Firefox).

Arnauld
sumber
4

Python 3 + Flask-Env , 7 13 14 17 byte

import\
flask_env

Tidak ada TIO karena tidak ada flask-env.

Temukan nama modul terpanjang yang tidak memiliki persimpangan dengan importdan tidak memiliki angka di akhir nama. _sha256lebih panjang tapi 256itu sendiri tidak kesalahan. Saya memang menemukan satu pustaka, b3j0f.syncyaitu satu byte lebih lama tetapi saya tidak dapat mengimpornya dengan benar.

  • +1 byte dengan mengganti spasi setelah importdengan \<newline>. Mengambil salah satu atau keduanya menyebabkan kesalahan.

Mungkin masih ada opsi yang lebih panjang daripada flask_env, saya tidak benar-benar melakukan pencarian yang lengkap tapi saya melihat ~ 70.000 modul. Terbuka untuk saran.

dylnan
sumber
256berjalan tanpa kesalahan.
Aidan F. Pierce
@ AidanF.Pierce Terima kasih, sudah diperbaiki.
dylnan
Saya mencoba import *[hawkey]dan serupa tetapi sayangnya tidak berhasil ...
dylnan
1
hawkey tidak ada di perpustakaan standar, jadi ini adalah "Python with hawkey" (mungkin dapat berbuat lebih baik dengan beberapa modul lain di suatu tempat)
Jonathan Allan
@ Jonathan Allan Poin bagus. Harus pergi sekarang, tetapi saya akan mencari nanti
dylnan
3

R , 14 byte

(Sys.readlink)

Cobalah online!

Ini mungkin yang terpanjang dalam R. Memanggil fungsi apa pun akan gagal, karena Anda akan dapat menghapus semuanya kecuali nama fungsi, yang hanya akan menghasilkan pencetakan kode sumber fungsi. Ini adalah objek dengan nama terpanjang dalam pengaturan R default tanpa karakter duplikat dan tidak ada nama objek yang tersisa saat menghapus karakter yang berdekatan.

Percobaan pertama ini tidak berhasil, tetapi saya belajar banyak dengan mencoba!

dontCheck({family;NROW})

ngm
sumber
2

Perl 5, 3 byte

y=>

=>adalah "koma lemak," yang mengutip kata pengantar di sebelah kiri. Jadi ini setara dengan

"y",

yang tidak melakukan apa-apa.

Tanpa tanda koma, yadalah operator transliterasi, yang tidak valid tanpa tiga karakter yang sama diulang kemudian.

Koma lemak saja tidak valid, sebagaimana adanya =dan >sendiri.

Chris
sumber
2

brainfuck , 2 byte

[]

Cobalah online!

Terinspirasi oleh jawaban Otak- Raja Jo King . Ini optimal karena satu-satunya kesalahan dalam brainfuck adalah tanda kurung yang tidak cocok. (Sekali lagi terima kasih kepada Jo King untuk info ini.)

dylnan
sumber
Ya. Satu-satunya kesalahan yang bisa dimiliki brainfuck adalah tanda kurung yang tak tertandingi
Jo King
1

ML standar , 22 byte

val 1089=op-(765,~324)

Cobalah online! op-(a,b)adalah bentuk de-sugared dari a-b. ~menunjukkan minus unary, jadi kami sebenarnya menghitung 765+324. Ungkapan ini cocok dengan pola pada konstanta 1089. Pertandingan ini berhasil jika program belum dirusak dan tidak - yah, tidak ada.

Jika pertandingan tidak berhasil karena beberapa digit dihapus satu mendapat unhandled exception: Bind. Menghapus op-hasil dalam kesalahan tipe karena tuple cocok pada int. Semua penghapusan lainnya akan menghasilkan kesalahan sintaksis.

Laikoni
sumber
1

Cepat 4 , 19 byte

[].contains{1 !=
0}

Cobalah online!

Semua kemungkinan kesalahan yang saya temukan adalah:

  • Menghapus salah [, ], {atau }akan menghasilkan kesalahan sintaks
  • Menghapus [].akan menghasilkanUse of unresolved identifier 'contains'
  • Menghapus .akan menghasilkanConsecutive statements on a line must be separated by ';'
  • Menghapus []akan menghasilkanReference to member 'contains' cannot be resolved without a contextual type
  • Menghapus {1 !=␊0}akan menghasilkanExpression resolves to an unused function
  • Menghapus 1 !=␊0akan menghasilkanMissing return in a closure expected to return 'Bool'
    • Menghapus baris baru akan menghasilkan '!=' is not a prefix unary operator
    • Menghapus ruang akan menghasilkan '=' must have consistent whitespace on both sides
    • Menghapus !=akan menghasilkanMissing return in a closure expected to return 'Bool'
      • Menghapus baris baru juga akan menghasilkan Consecutive statements on a line must be separated by ';'
      • Menghapus spasi dan baris baru (dan nol atau salah satu digit) akan menghasilkan Contextual type for closure argument list expects 1 argument, which cannot be implicitly ignored
  • Menghapus [].containsakan menghasilkanClosure expression is unused

Beberapa program menarik lainnya adalah (satu di setiap baris):

[].isEmpty
[:].values
[1:2]
Herman L.
sumber
Ini berisi dua as
caird coinheringaahing
0

Batch, 7 byte

set/px=

Awal yang bagus

ericw31415
sumber
0

Retina , 2 byte

Saya tidak akan terkejut jika ini optimal ...

()

Cobalah online!

Regex berisi grup kosong. Menghapus salah satu paren akan menyebabkan kesalahan parse karena tanda kurung yang tidak cocok.

Solusi lain adalah: \(, \), \[, \], \*, \+, \?,a]

mbomb007
sumber
a]tidak salah.
jimmy23013
@ jimmy23013 Ah, saya tidak tahu bagaimana saya melewatkan itu. Diputar kembali.
mbomb007
-2

C (gcc) , 73 75 byte

#include <ftw.h>
ABCEGHIJKLMNOPQRSUVXYZabjkmopqrsvxz234567890(){g FTW_D-1;}

Cobalah online!

Berdasarkan jawaban @Steadybox, terima kasih kepada @Angs untuk mendeteksi kesalahan serius.

Ya, ini adalah hack yang kotor (karena sebenarnya menggunakan #definewith -DABCEGHIJKLMNOPQRSUVXYZabjkmopqrsvxz234567890=maindan -Dg=return), tapi saya tidak melihat aturan apa pun yang melarang opsi kompiler seperti itu.

troli813
sumber
Baris pertama dapat dihapus sehingga program tidak murni
Angs
@Angs Terima kasih, sudah pasti (dengan harga penambahan opsi kompiler lain)
trolley813
8
Menurut posting meta ini , kiriman Anda tidak lagi dalam bahasa C, tetapi C89 + -DABCEGHIJKLMNOPQRSUVXYZabjkmopqrsvxz234567890=main+ -Dg=return, jadi saya berpendapat bahwa ini menggunakan bahasa buatan yang dirancang khusus untuk tantangan , yang dilarang secara default.
Dennis
Anda dapat menghapus -1tanpa kesalahan
Jo King