Halo dunia dengan twist

17

Tujuan Anda : untuk menulis sepotong kode yang akan menghasilkan hasil klasik "Halo, dunia!" dicetak ke STDOUT atau setara.

Aturan : Kode harus sepenuhnya dalam pencetakan ASCII. Semua kode harus fungsional - penghapusan karakter penghitungan tunggal apa pun harus mengubah hasil atau menyebabkan kode tidak berfungsi. Semua variabel harus digunakan setelah penugasan. Karakter dan Liter string harus diperlukan untuk output - yaitu, penggantian karakter literal atau karakter apa pun dalam string literal dengan karakter lain harus mampu mengubah hasil (dan bukan melalui efek urutan melarikan diri - mengganti karakter dengan backslash atau setara)

(CATATAN: Aturan final diedit pada)

Penilaian : Di sinilah ia menjadi menarik. Menang skor tertinggi sebagaimana ditentukan oleh jumlah karakter, sesuai aturan bowling kode yang khas. Tetapi penggunaan berulang karakter akan menghasilkan pengurangan poin. Secara khusus...

  1. Penggunaan berulang karakter alfanumerik apa pun (az, AZ, 0-9) akan menghasilkan pengurangan 3 poin per pengulangan (penggunaan pertama tidak menghasilkan pengurangan).
  2. Penggunaan tanda baca dasar berulang-ulang ([!? .-, ": ';]) - termasuk tanda kurung - akan menghasilkan pengurangan 2 poin per pengulangan.
  3. Penggunaan berulang karakter ASCII lainnya {`~ @ # $% ^ & * _ + = | \ /> <} - termasuk kurung keriting - akan menghasilkan pengurangan 4 poin per pengulangan.
  4. Penggunaan spasi, tab, dan baris baru yang berulang akan menghasilkan pengurangan 1 poin per pengulangan. Artinya, hanya penggunaan spasi, tab, atau baris baru pertama yang akan dihitung terhadap total Anda.

Catatan: komentar tidak dihitung terhadap total, meskipun karakter yang menandai awal / akhir dari suatu komentar dilakukan. Misalnya, dalam C / C ++, Jika sudah /* This is a comment */, maka akan dihitung dua garis miring dan dua tanda bintang, tetapi tidak ada di antara keduanya.

Beberapa contoh (catatan: menggunakan Julia sebagai bahasa sampel) ...

print("Hello, world!");

Total karakter yang terlihat: 22
Berisi Ruang: +1
Alfanumerik
berulang : -12 untuk llor Tanda baca berulang: -2 untuk "
Skor akhir: 22 + 1-12-2 = 9

print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII

Total karakter: 43 (tidak menghitung karakter setelah #, yang merupakan karakter komentar)
Berisi Ruang: +1
Alfanumerik
berulang : -18 untuk rr1008 Tanda baca berulang: -24 untuk () "" "" "" ,,,
Final skor: 43 + 1-24-18 = 2

xy=STDOUT
m="Hello, world!"
print(xy,m);

Total karakter yang terlihat: 37
Berisi Baris Baru: +1
Berisi Spasi: +1
Alfanumerik
berulang : -18 untuk xyllor Tanda baca berulang: -4 untuk ",
ASCII berulang lainnya: -4 untuk =
Skor akhir: 37 + 1 + 1-18-4 -4 = 13

Beberapa potongan kode tidak valid ...

x=2;print("Hello,world!")  

Masalah: xditugaskan, tetapi tidak digunakan.

print("Hello,"*" world!")  

Masalah: *tidak perlu, hasilnya akan sama tanpa itu.

k=1
if k>0
  print("Hello, world!")
else
  print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end  

Masalah: printPerintah kedua tidak akan berjalan. Juga, menghapus karakter dalam kutipan di printperintah kedua tidak akan mengubah output.

x="Hello, world!";
print(x)  

Masalah: penghapusan baris baru tidak akan mengubah hasil atau menyebabkan kesalahan (di Julia, titik koma hanya diperlukan jika beberapa perintah berada di baris yang sama, jika tidak hanya menekan nilai balik).

print("Hellos\b, world!")  

Masalah: skarakter tidak memengaruhi hasil, karena terhapus oleh \b. Ini dapat diterima jika dilakukan melalui kode ( "Hello",char(100),"\b, world!"), tetapi tidak dapat dilakukan melalui string literal atau karakter literal.

Kalkulator skor nyaman - http://jsfiddle.net/4t7qG/2/ - terima kasih kepada Doorknob

Glen O
sumber
1
Ini sepertinya relevan dengan diskusi Anda, meta.codegolf.stackexchange.com/questions/777/…
Martin Ender
3
Saya membuat JSFiddle di mana Anda dapat menempatkan kode Anda dan secara otomatis akan mengetahui skor Anda. Apakah Anda baik-baik saja dengan saya mengedit tautan ke tautan itu ke pos?
Gagang Pintu
1
@ Dennis - jika program Anda menghasilkan baris baru karena perintah, tidak ada masalah (misalnya, println di Julia mencetak dan kemudian menambahkan baris baru di akhir). Tapi itu seharusnya tidak menjadi bagian dari string.
Glen O
1
@ ACarter - pada dasarnya, ya. Tetapi pembatasan dan deduksi membuatnya menjadi tidak sepele.
Glen O

Jawaban:

17

Perl - 96

(Cukup bagus, diberi skor teoretis maks 97)

s{}[Hel0o, w3$=d!];y<"#%&'*.124578:?@BCDEFGIJKLMNOQ/-9>(
    6PRSTUVWXYZ^_`abfghjmqvxz|~\cAk-u)+print

(Perhatikan bahwa baris kedua dimulai dengan \tkarakter tab yang sebenarnya )

Kode tersebut terdiri dari 98 karakter dan berisi setiap karakter ascii tepat sekali, plus tambahan -.
98 - 2 = 96

Tidak ada tali literal di sini, tapi penghapusan setiap karakter tunggal istirahat program.

Deobfusiasi

Ada 3 pernyataan dalam program ini (well, sebenarnya 2 tapi saya disalahgunakan +sebagai semacam pemisah pernyataan)

  1. s{}[Hel0o, w3$=d!]
    Ini adalah kasus operator sed yang sangat luas. Ini lebih umum ditulis sebagai s/a/b/, atau s:a:b:, tetapi perl memungkinkan lebih banyak fantasi di sini:, s(a)(b) s(a)^b^ s(a)[b]dan bahkan s qaqbq.
    Ini menggantikan string kosong (di dalam {}) dengan Hel0o w360d!(di dalam []) ( $=interpolasi 60secara default). Karena kurangnya ~=operator, ia beroperasi $_.

  2. y<"#%&'*.124578:?@BCDEFGIJKLMNOQ/-9>(\n\t6PRSTUVWXYZ^_`abfghjmqvxz|~\cAk-u)
    Ini juga merupakan kasus yang sangat meluas, tetapi dari troperator, yang juga disebut y( y< >( )).
    Mari kita lihat tabel pengganti:
    " # %&'*.124578:?@BCDEFGIJKLMNOQ /-9
    \n\t6PRSTUVWXYZ^_`abfghjmqvxz|~\cA k-u
    Saya telah memindahkan beberapa karakter sehingga string yang ada tidak rusak. Satu-satunya bagian yang benar-benar berfungsi di sini adalah /-9-> k-u. Itu menggantikan 0dengan l, 3dengan o, dan 6dengan r.
    Sekali lagi karena kurangnya ~=operator, ini beroperasi pada $_
    Jadi sekarang kita memiliki frasa lengkap dalam $_variabel.

  3. print
    Kurangnya argumen membuatnya hanya mencetak $_variabel.

mniip
sumber
Saya tidak tahu Perl cukup mengomentari ini - apa set karakter antara <dan + lakukan?
Glen O
@ GlenO Hanya /-9dan k-usebenarnya digunakan untuk mengubah string. Sisanya adalah sampah berukuran sama . Jika Anda menghapus hanya satu char, set akan misalign dan program tidak akan menampilkan "Halo, dunia!" lagi.
mniip
Dalam hal itu, dengan cara apa "sampah" dijalankan? Artinya, dengan cara apa fungsinya? Jika itu hanya pengisi yang akan dilompati oleh kode, maka itu setara dengan kode yang tidak berjalan dalam kondisi.
Glen O
3
@ GlenO Tidak. Untuk spec: <...> removal of any single counting character must change the result or cause the code to not function.Penghapusan 1 karakter di mana saja mematahkannya. Anda dapat membuatnya berfungsi dengan menghapus 2 karakter, tetapi itu tidak ada dalam aturan.
mniip
2
All code must be functional. Anda jelas menekuk aturan, setidaknya. Saya tidak mengatakan "itu melanggar aturan" secara langsung, tetapi jelas dipertanyakan.
Glen O
7

Jawaban ini dibuat sebelum menambahkan aturan tentang string literal dan tidak berpartisipasi dalam kontes.

#include <iostream>
int main(){std::cout<<56+"  !$%^&*?12347890-_QWERTYUIOPASDFGJKLZXVBNM,.qypfghjk:zvbHel\x6Co, world!";}

Ini sepenuhnya sah. : P Jika Anda menghapus karakter apa pun dari string itu, karakter itu akan dicetak ello, world!.

HolyBlackCat
sumber
Harap sertakan skor kode Anda dalam jawaban Anda.
ProgramFOX
Juga tidak akan mengubah skor Anda, tetapi ruang di sekitar <<harus dihapus.
Martin Ender
1
Hmmm ... sementara saya memberi tepuk tangan atas jawaban Anda, itu terutama mengungkapkan lubang kecil dalam batasan saya. Saya akan memberi Anda upvote, dan saya senang orang lain melakukan hal yang sama jika mereka menyukainya, tetapi saya akan mengedit batasan tambahan.
Glen O
1
OK, lebih jauh ke komentar saya sebelumnya, saya sekarang telah menambahkan batasan yang menyatakan bahwa string dan karakter literal harus relevan - penggantian karakter di dalamnya harus dapat mengubah hasilnya. Ini memungkinkan if 'x'>'w'teknik, tetapi memblokir "k \ bH" untuk menghasilkan "H", misalnya. Jangan ragu untuk berkontribusi jawaban kedua setelah pembatasan ditambahkan.
Glen O
4

CJam, 94

{'H"EJO, WoRLD!"el96A+c/~_-3=0$@}"# 
`&^<>|;:?.()[]\1aBCdfFgGhiIjkKmMnNpPqQrsStTuUvVwxXyYzZ"254b87%*

Cobalah online! Perhatikan bahwa harus ada tabulator tepat sebelum linefeed. SE tidak suka tabulator, jadi Anda harus memasukkannya secara manual.

  • Panjang 100 karakter
  • ulangi alnum: -0 ()
  • tanda baca berulang: -6 ("" ")
  • diulang lainnya: -0 ()
  • spasi putih berulang: -0 ()

Total skor: 94

Saya telah menggunakan kode berikut untuk memeriksa bahwa tidak ada karakter di dalam string yang dapat dihapus:

"#  
`&^<>|;:?.()[]\1aBCdfFgGhiIjkKmMnNpPqQrsStTuUvVwxXyYzZ"
:A,,{_A\<A@)>+254b87%}%`

Ini mencetak array yang menunjukkan berapa kali Halo, dunia! akan dicetak jika karakter yang sesuai dengan indeks dihapus.

Dennis
sumber
Ketika saya menjalankannya di tautan Anda, itu menghasilkan "Halo, dunia!" enam kali berturut-turut. Juga, apa yang dilakukan serangkaian karakter?
Glen O
Saya menduga baris baru adalah kesalahan - menghapusnya membuatnya berfungsi.
Glen O
Masalah salin-tempel. Seharusnya ada tabulator tepat sebelum LF. Sepertinya SE tidak akan membiarkan saya melakukan itu ... String dianggap sebagai nomor base-254 ( 254b). Modulus 7 hasil akhir harus 1, sehingga blok kode sebelumnya dieksekusi sekali. Saya membutuhkan modulus untuk membuat setiap karakter diperlukan.
Dennis
Nah, setelah menambahkan di tab hilang (yang tidak "memperbaiki" kode), menghapus Z, yang T, atau mungkin beberapa karakter lain tidak mengubah hasilnya.
Glen O
Saya telah salah mengartikan sebagian dari pertanyaan Anda. Sudah diperbaiki sekarang.
Dennis
3

Ruby, 28 41

Untuk memulai jawaban dengan solusi dalam semangat pertanyaan:

print"He#{?l*2}o, "+'world!'if[$`&(9<=>6)^7|~8-5/3.1%0x4]

Mencetak gol (saya pikir saya benar):

  • 57 karakter
  • ulangi alnum: -12 ( orli)
  • tanda baca berulang: -4 ( "')
  • diulang lainnya: -0
  • spasi putih berulang: -0
Gagang pintu
sumber
Terlihat baik untuk saya, dari segi penilaian. Tidak perlu memasukkan hukuman yang tidak berlaku, tetapi tidak ada salahnya memasukkannya.
Glen O
The .di 3.1dapat dihapus tanpa masalah. Seperti halnya xdalam 0x4atau -dalam 8-5.
3

PHP, 1 (ya, satu poin!)

Menggunakan karakter ajaib untuk menghasilkan checksum, yang dalam bentuk biner cocok dengan "Neraka", "o, w", "orld", dan "!".

Biasanya saya suka mencari celah, tapi kali ini saya memutuskan untuk bermain dengan semangat dan niat dari kontes. Setiap karakter dan posisinya sangat penting untuk output. Satu-satunya tempat yang bisa Anda gantikan adalah nama variabel yang bukan nilai literal, spasi putih di antara phpdan foreachyang PHPmemperlakukannya sama, dan penggunaan 'vs "yang PHPmemperlakukannya serupa.

<?php foreach(array('_MC:`~+V4@SbHR/l[J','dN#UB`5!Rv^NG@D}','9gm6L&-kuD','8OM97g.q]XQ0')as$j)print(hash("crc32",$j,1))?>

FYI, ini adalah beberapa string sihir dan hash yang menarik:

E.D}S:  Hell
9UDIRQ: Hell
N\7&*`%:    orld
UWX[E^O:    orld
mAHzDEb:    !   
uLJ7Ck&:    Hell
B+bG5mYJ:   Hell
:OvMzuOR:   !   
TgYR9g!6k:  o, w
NkFN`!8mI:  o, w
N#VA\j~}J[: Hell
vEl*]@0XQ5: o, w
9gm6L&-kuD: orld
*}{Xg@HN`\: !   
Pj@Y44uA6YJ:    Hell
|7OX0VF8gv}:    !   
DLRJAjgMj}\:    !   
!0bT*D}O4Lw:    orld
YGN97^v7ZY`:    Hell
++~bL/kP:|]W:   o, w
8OM97g.q]XQ0:   !   
l^m-DqZ^g[&+:   !   
Ewu]Rv~*DHQ7:   Hell
JIqjgF|S!\`8l:  Hell
b4l!MEG7vTu6/:  Hell
+B:zEq*J\k-Cm:  !   
_}E7wZD76^`Y9AU:    orld
q:Nq-~+_S7~N9Hz:    !   

sumber
Fungsi kode masih jika saya menghapus \t, \natau ruang. Bukan ahli PHP, tetapi ;tampaknya opsional juga.
mniip
@mniip - Suntingan dibuat. Saya tidak menyadari bahwa titik koma adalah opsional dalam beberapa kasus.
3

Befunge-98 , 97 poin!

"v!dlrow ,h
B[CDEFGIJkLMNOPH
$<QRSTUV@|5cg1fe':-%\64*ab+7_/89}{0  j2
WXYZK`.=#>]
s()impq	n 3~
Atuxz&;y^ ?

Cobalah online!

Tab berada di antara qdan n.

Menggunakan trik yang mirip dengan jawaban Befunge sebelumnya untuk membuat garis dengan karakter yang tersisa, tetapi hindari menggunakan karakter duplikat di bagian pelaksana. Menghapus salah satu karakter yang tidak mengeksekusi menghasilkan bagian yang mengeksekusi tidak pada tempatnya, biasanya berakhir dalam loop tak terbatas atau mencetak output yang salah.

Bagaimana itu bekerja

Sungguh, satu-satunya bagian yang mengeksekusi seperti:

"v!dlrow ,h
         k     H
$<      @|5cg1fe':-%\64*ab+7
         >]
        ^ ?

Pertama menggunakan string pembungkus literal untuk ditambahkan , world!ke stack. Ini menghindari dua "s.

$<      @|5cg1fe':-%\64*ab+7

Ini menambah Hellotumpukan menggunakan berbagai metode untuk menghindari duplikat karakter. $muncul kelebihan ruang yang disebabkan oleh string pembungkus literal.

7+menambahkan 7 ke hdari ujung string literal untuk membuat o . ba*46\%:menghitung 111, nilai ascii ldan menduplikatnya.

'e menambahkan e ke tumpukan.

f1g mendapat karakter di 1,15 yang merupakan H

Kemudian menggunakan kembali ,dalam string untuk mencetak keseluruhan Hello, world!. Sisanya hanyalah perubahan arah untuk menavigasi ke akhir @.

Jo King
sumber
1

Ruby, 78

Lebih banyak aturan penyalahgunaan, saya merasa seperti, tidak yakin persis apa tambalan itu. Mengambil string panjang dan memeriksa jumlah hasil, sehingga penghapusan atau perubahan apa pun akan menyebabkan program gagal. Mungkin bisa sedikit dioptimalkan untuk menghapus duplikasi beberapa surat dan mendapatkan spasi di sana.

puts('Hello, world!')if%["\#$&*+-/:;<>?@ABCDEFGIJKLMNOPQRSTUVWXYZ^_`abcghjknqvxyz{|}~123].sum==4980
histokrat
sumber
3
Masalahnya adalah, semuanya setelah dan termasuk ifbisa dihapus.
seequ
@TheRare - tidak ada yang salah dengan itu, selama iftidak benar-benar berfungsi dan hal-hal setelah itu tetap mematuhi aturan.
Glen O
@ GlenO Tapi bukankah itu dihitung sebagai "kode yang dapat dilepas"? Hanya puts('Hello, world!')akan bekerja. Saya pikir aturan perlu diperjelas jika ini sah.
seequ
@TheRare - di belakang, saya mungkin harus menggunakan sapuan "bagian dari kode seharusnya tidak mampu menghasilkan output yang sama", tapi saya tidak berpikir saya harus terus mengubah aturan. Ketika mereka berdiri, selama kode itu fungsional dan tidak arbitrer, dan mengikuti aturan lain, itu sah. Paling tidak, metode solusi ini tidak dapat dicapai di sebagian besar bahasa (suntingan yang saya buat menutup celah yang berfungsi di sebagian besar bahasa).
Glen O
@ GlenO Andalah hakimnya. Mintalah saya untuk menghapus komentar ini jika Anda merasa itu tidak perlu.
seequ
1

PHP, 2257

Loophole: backslash dihilangkan dari spesifikasi dan kalkulator skor!

Kode ini menghitung jumlah kemunculan garis miring terbalik di setiap string dan mencetak ASCII yang setara. Mengganti backslash dengan karakter lain, atau menghapus backslash, bisa menyebabkan kesalahan parse atau mengubah hasilnya.

Fitur yang rapi tentang garis miring terbalik dan PHPmereka harus diloloskan, sehingga menggandakan skor secara otomatis! Anda dapat menggandakan, melipattigakan, dll., Skor dengan mengalikan jumlah garis miring terbalik, tetapi tidak ingin menjadi serakah, dan saya pikir itu mungkin melebihi batas dari apa yang dapat Anda masukkan.

<?php foreach(array('\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\','\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')as$x)print(chr(substr_count($x,"\\")))?>

sumber
Ini jelas tidak lebih dari kesalahan ketik dalam deskripsi, bukan celah. Terlebih lagi, Anda sudah tahu itu. Deskripsi tersebut secara eksplisit mengatakan "karakter ASCII lainnya". Pada saat Anda membaca ini, itu akan diedit untuk memasukkannya.
Glen O
Secara khusus, backslash adalah sumber pertanyaan, tetapi saya tidak menyadari bahwa itu diperlakukan sebagai urutan pelarian.
Glen O
Ini bukan perubahan aturan, ini memperbaiki kesalahan ketik kecil. Backslash ada dalam aturan, itu hanya tidak menampilkan (untuk melihat sendiri, klik tombol "diedit", lalu klik pada "down-by-side markdown"). Dan yang lain tidak mengeksploitasi celah, mereka mengeksploitasi fitur bahasa mereka.
Glen O
1

Befunge - 87

"dlrow ,olleH"bk,                                                                   v
!#$%&'()*+-./0123456789:;  <=>?ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`acfghijmnpqstuvxyz{|}~@

Baris pertama bernilai empat poin karena semua pengulangan, tetapi tidak ada karakter duplikat di baris kedua. Satu-satunya string literal dalam kode ini adalah dlrow ,olleH, yang dibalik dan dicetak sebagai output. Menghapus salah satu karakter akan memutuskan sambungan vdi akhir baris pertama dari @pada akhir baris kedua, menyebabkan program tidak pernah berakhir. Jika vitu sendiri dihapus, maka kode akan masuk ke loop tak terbatas mencetak output yang benar.

pppery
sumber
0

Aceto , 3

Akhirnya berhasil mendapatkan skor positif!

"Hello, "-J' sJ"world!"∑-JUJpn

Cobalah online!

FantaC
sumber
1
tidak ada dalam pencetakan ASCII
L3viathan
0

Acc !!, -138 (dan ya itu negatif 138)

Meskipun ini mungkin bukan skor terbaik yang pernah saya dapatkan di PPCG, saya ragu itu bisa lebih tinggi dari ini di Acc !!

108
Write 72
Write 101
Count i while i-2 {
	Write _
}
Write _+3
Write 44
Write 32
Write 119
Write 111
Write 114
Write _
Write 100
Write 33

Cobalah online!

FantaC
sumber