Secara khusus, gunakan masing-masing simbol ini setidaknya sekali dalam kode sumber Anda:
! " # $ % & ' () * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
Simbol di dalam komentar, string literal, regexps (atau jenis literal lainnya, dll.) Tidak dihitung (tetapi pembatasnya seperti /**/
atau ""
memang dihitung).
Program seharusnya tidak melakukan tindakan apa pun. Hanya perlu mengkompilasi dan tidak melakukan apa-apa saat dijalankan.
Jika karena alasan tertentu beberapa simbol tidak dapat digunakan dalam bahasa pilihan Anda, jelaskan dengan seksama (apa dan mengapa harus dikecualikan).
Pembaruan: Beberapa jawaban menggunakan simbol dengan ekspresi reguler. Saya menganggap ini agak bermasalah, itu sama dengan menempatkan mereka ke string literal atau komentar (itu sebabnya saya menempatkan dll dalam persyaratan itu). Silakan coba tanpa ini. Saya juga memperbarui persyaratan di atas.
Pembaruan: Kemenangan kode terpendek (ditandai sebagai kode-golf ). Seperti yang disarankan, kemungkinan besar kita akan memerlukan beberapa kriteria tie-breaker. Saya menyarankan bahwa jika ada dasi, yang menang adalah di mana simbol ASCII muncul sebanyak yang dipesan. Secara formal: Saring kejadian pertama dari masing-masing simbol yang terdaftar dari suatu program. Ini akan menghasilkan permutasi pada simbol yang terdaftar. Program dengan jumlah inversi yang lebih sedikit dari permutasi yang dimenangkan.
Pembaruan: Saya akan senang melihat beberapa / lebih banyak solusi dalam bahasa reguler / umum, seperti C (++), Java, Scala, Haskell, dll.
sumber
@%
atau backtick dapat muncul dalam c kecuali sebagai bagian dari literal (dalam versi c yang cukup baru%
dapat muncul dalam digraf). (dan#
hanya muncul dalam arahan preprosesor, tetapi kita hanya harus hidup dengan itu)? Yaitu, saya meminta pendekatan Matt agar dibuat eksplisit secara hukum.#
,@
dan `tidak sah di luar jenis literal apa punJawaban:
Brainf * ck, 32 karakter
Mencetak wajah yang tersenyum (jika konsol Anda dapat menampilkan simbol ASCII 1)
Yay, solusi Branf * ck yang mengalahkan Golfscript! : P
Jika Anda bersikeras tidak ada hasil, cukup tukarkan
+
dan.
:sumber
Perl, 32 karakter
tidak ada simbol yang disembunyikan dalam komentar, string literal, atau ekspresi reguler. menggunakan semua simbol tepat sekali.
Deskripsi
Saya telah mencoba untuk menunjukkan operator diutamakan dengan lekukan: ekspresi paling kanan dievaluasi sebelum yang ke kiri
sumber
`<@"^[(\{_},)]/+-~%'?&|:!*.=>
?$`
,@"
,%'
, dan*.
(skalar, array, hash, dan typeglob, masing-masing), meskipun itu sangat sulit untuk memastikan. . .Ruang putih, 32
semua karakter non-spasi diabaikan, jadi ini sebenarnya adalah program kosong
sumber
Python 65
Saya menggunakan karakter
?
dan$
di dalam string literal. Karakter-karakter ini tidak sah di luar string literal atau komentar.sumber
{[`'"$?'`,]}
tidak valid, karena membuat kamus dengan kunci tanpa nilai yang terkait. Anda dapat membuatnya valid dengan dua karakter lebih seperti:{[`'"$?'`,]:0}
PHP, 32 karakter
Mungkin sedikit troll, program PHP ini juga QUINE , dan menggunakan semua simbol dalam urutan yang tepat seperti yang tercantum.
Dieksekusi dari baris perintah, output hanya akan menjadi isi file, karena tidak ada
<?php
untuk memanggil penerjemah.sumber
Perl 6 (43 karakter)
Mari kita definisikan operator infiks dengan nama yang agak tidak biasa:
Ini bukan literal atau literal dalam RE atau apa pun yang tersembunyi dalam komentar. Kamu tidak percaya padaku? Menjalankan program berikut akan menghasilkan "2":
Tapi saya cukup yakin Anda penipu akan memperpanjang aturan lebih lanjut untuk mengecualikan redefinisi dari bahasa itu sendiri untuk membuat kita tidak senang. :(
sumber
Haskell, 53
Kita bisa membuat ini sedikit lebih pendek
45
Namun program ini tidak menghentikan, dan menggunakan lebih karakter (
'!'
,'<'
,'|'
) di infiks baru-didefinisikan.sumber
k (33 karakter)
Sangat mudah dalam k. Sayangnya
"
harus dipasangkan.sumber
GolfScript (33 karakter)
"
harus dipasangkan. Butuh sedikit trial and error untuk membuatnya tidak menghasilkan apa-apa - sebagian besar posisi lain dari:'
hasil dalam beberapa keluaran.sumber
J, 33 karakter
'
perlu digandakan untuk menghindari kesalahan sintaksis.Jawaban pertama saya hilang beberapa simbol.
sumber
C, 48 karakter
Agak curang.
sumber
#define Q(_) "##_##"
...char*c=Q(~''*+,-./:<=>?[]
| \); `. Tidak ada dalam string, itu hanya akan dikonversi menjadi satu ... Itu akan lebih lama, tentu saja."";
), tetapi$@
dan backtick sepertinya tidak ada harapan.#define Q(_) #_
. Preprosesor akan memperlakukan"##_##"
sebagai string literal.Postscript - 32 karakter
Menghasilkan objek di stack, tetapi sebaliknya tidak memiliki efek. Postscript memungkinkan hampir semua karakter dalam pengidentifikasi kecuali
<>()[]{}/
yang merupakan bentuk sintaksis khusus dan%
yang memberikan komentar. Program ini ditandai sebagaisumber
C # (91 karakter)
Sejauh yang saya tahu, $ karakter bukan karakter yang valid di luar string literal, jadi saya tidak menggunakannya dalam jawaban saya.
EDIT : Terima kasih kepada Peter Taylor , saya mempersingkat kodenya.
sumber
#if A
...#endif
lebih pendek dari#region
...#endregion
. Dan"x"[0]+
lebih pendek dari[System.STAThread]
.PowerShell (52 karakter)
Saya harus meletakkan karakter ^ sebagai string literal karena sejauh yang saya tahu, ^ karakter bukan karakter PowerShell legal di luar string literal. Koreksi saya jika saya salah.
Satu-satunya cara yang saya temukan cocok dengan karakter : adalah dengan menggunakan operator :: untuk melakukan panggilan ke metode statis.
sumber
Skema, 41 karakter
Ini mengambil keuntungan dari toleransi Skema yang luar biasa untuk karakter dalam nama variabel. Dalam program ini saya membuat variabel dengan nama! $% & * +, -. /: <=>? @ [] ^ _ `{|} ~ Yang diterima dengan senang hati oleh Skema.
sumber
Tcl 37 karakter
Mendefinisikan variabel
!#$%&'()*+,-./:<=>?@[]^\_`|~
dengan string kosongsumber
C:
8356 karakterTanda-tanda dan backticks bukan bagian dari sintaks C yang diizinkan, jadi saya telah menempatkannya di antara tanda kutip.
sumber
(b)
? Ini sintaks yang aneh dan pemborosan karakter.0.0
jauh lebih pendek.main(_,$)
akan menghemat karakter.x?:y
, tetapi itu bukan standar C.Gangguan Umum, 33 karakter
Bagian utama dari evaluasi di atas (atau lebih tepatnya, akan mengevaluasi jika bukan untuk yang
#+()
di depannya) dengan simbol bernama:The
#+()
adalah untuk menghindari output. Saya tidak yakin apakah|foo|
sintaks untuk simbol dianggap sebagai literal, tetapi simbol digunakan sebagai nama variabel / fungsi dalam Common Lisp, dan ada beberapa jawaban yang sudah menggunakan karakter yang diperlukan di dalamnya.sumber
Smalltalk (Squeak 4.x dialek) 38 karakter
Menerapkan metode ini di Object, sintaksnya valid jika Preferensi Izinkan penetapan garis bawah (yang merupakan pengaturan default)
menyatakan Z sebagai var global dalam menu pop-up jika interaktif
Penjelasan:
Sial, siapa bilang Smalltalk bisa dibaca?
Perhatikan bahwa saya tidak curang, satu-satunya karakter yang tidak valid `dimasukkan ke dalam Karakter literal. Sunting lihat di bawah, ini adalah pernyataan salah (setidaknya dalam mencicit)
Tapi kita bisa mencapai 34 karakter dengan trik ini
Kali ini:
Sebenarnya, kita dapat menganggap ini sebagai kecurangan ... Ini bukan String literal, tetapi masih non literal ...
Saya masih harus menggandakan kutipan komentar "" (kecuali jika saya membuat Karakter literal dengan $ ", tapi kemudian saya perlu menggandakan kutipan String '')
Saya masih harus menggunakan huruf untuk parameter (_ tidak diterima bahkan jika kita atur Preferensi mengizinkan garis bawah pada pemilih menjadi true).
Yang menyenangkan adalah kita bahkan dapat menjalankan metode, misalnya mengirim pesan ke 1 dengan argumen 2:
EDIT Akhirnya dalam 35 karakter tanpa curang
Catatan:
sumber
R: 108 karakter
Jelas pengajuan terpanjang, tetapi untuk dapat menggunakan simbol
@
dan$
dalam R, kita perlu membuat objek yang memiliki slot (diindeks menggunakan@
) dan elemen bernama (diindeks menggunakan$
).Solusi terpendek yang dapat saya pikirkan adalah membuat kelas objek baru (
a=new(setClass("a",representation(b="list")))
), yang memakan biaya. Jika tidak, mulai dari klasik yang tidak memerlukan penjelasan (seperti!=
,#
atau1:2
),membuat operator baru yang melakukan hal yang sama dengan operator
?
(yaitu memanggil halaman bantuan dari elemen yang didahului).%*%
menghitung produk dalam dari dua matriks (di sini1^1
dan.1
).Simbol
_
tidak melakukan apa pun (AFAIK) dalam R tetapi secara rutin digunakan dalam nama variabel atau fungsi, seperti halnya di sini.sumber
TI-Basic, 36
sumber
End
mengakhiri pernyataan loop, bukan program. Saya pikir Anda maksudReturn
.