Mandolin quine

25

Tulis quine ... dari mana setiap karakter lain dapat dihapus itu masih quine yang valid. Anda dapat menentukan apakah akan mulai menghapus karakter pada karakter pertama atau kedua.

Kriteria pemberian skor (tambahkan bonus / persentase pena bersama-sama untuk persentase total):

  • Panjang jawaban minimal harus 4 karakter
  • Program harus mengandung setidaknya satu karakter alfabet dalam sumbernya, jadi misalnya, 12345!@#$%^&*()didiskualifikasi
  • + 750% jika bahasa yang digunakan tidak menyelesaikan-Turing (Saya melihat Anda, HTML!)
  • -15% jika solusi tidak membaca sumbernya dari mana saja dalam bentuk apa pun
  • -20% jika Anda juga bisa menyimpan hanya setiap karakter ke-5 dan masih membentuk quine

Skor diukur dengan jumlah karakter dalam program pertama.

Contoh (bukan program nyata):

Jika 123456789abcdefdan 13579bdfkeduanya quines, skor adalah 15. Selain itu, jika 159djuga quine, maka skor akhir adalah 12.

Ini adalah kode-golf, jadi skor terendah menang.

Jwosty
sumber
2
@ hosch250 Program asli tidak akan menjadi quine karena tidak akan mencetak spasi putih tersebut. Hal yang sama berlaku untuk komentar yang tidak perlu.
Jwosty
1
Ya, saya belum pernah memprogram quine sebelumnya, dan tidak tahu bagaimana melakukannya tanpa membaca kode sumber di C ++. Saya telah melihat mereka di C ++ sebelumnya!
Hosch250
1
Anda menyatakan: "-20% jika Anda juga dapat menghapus setiap 4 karakter dan masih membentuk quine". Tetapi secara teknis ini bukan yang terjadi dalam contoh Anda. Maksudmu kamu bisa melakukannya untuk kedua kalinya?
mmumboss
4
Apakah bonus tersebut bersifat aditif atau multiplikatif? Artinya, jika program saya panjangnya 10 karakter dan memenuhi syarat untuk bonus -15% dan -20%, nilainya akan 10 * (1 - 0,15 - 0,2) = 6,5 atau 10 * (1 - 0,15) * (1 - 0,2) = 6,8? Saya berasumsi yang terakhir, tetapi klarifikasi eksplisit akan menyenangkan.
Ilmari Karonen
1
Bukankah ini quine Mandoline, bukan Guillotine? Guillotine membuat satu bersih, umumnya fatal, memotong dan kepala berguling. Mandolin dibuat dengan irisan banyak spasi merata. :)
Jonathan Van Matre

Jawaban:

24

PHP, 4 karakter - 15% - 20% = 2,72 2,6 poin

ABCD

Ya, PHP adalah bahasa lengkap Turing. Tidak ada yang mengatakan saya harus menggunakan salah satu fitur pemrograman yang sebenarnya. ;-)

Sunting: Mengubah skor berdasarkan klarifikasi bahwa bonus bersifat aditif, bukan multiplikatif.

Ilmari Karonen
sumber
Ini bekerja di ASP, mungkin.
Ismael Miguel
2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ Saya menyerah. : P
Jwosty
17
Sebenarnya, penggunaan fitur pemrograman aktual PHP tidak disarankan.
Rhymoid
1
Ini bukan quine yang tepat. Masih jawaban yang bagus,
MilkyWay90
14

TI BASIC 4 - 35% = 2.6

Saya mungkin mengerti mereka salah, tapi saya pikir saya juga memenuhi syarat untuk bonus -15% dan -20%, yang berarti saya memiliki skor serendah mungkin.

Saya dapat menulis program:

123i

yang akan menampilkan di 123imana saya tentu saja unit imajiner. Ketika Anda menghapus karakter 1 dan 3 semua yang tersisa adalah 2ioutput mana2i

mmumboss
sumber
Tidak cukup ... '12i' akan menampilkan '12i' dan '2' akan menampilkan '2' untuk skor minimum 1,95.
intx13
Sebenarnya, '2i' skor 1,3, dan jika program kosong dianggap quine, 'i' skor 0,65.
intx13
4
@ intx13: "Panjang jawaban minimal harus 4 karakter. "
Ilmari Karonen
Ah, aku merindukan itu!
intx13
Kalahkan aku untuk itu;)
Timtech
13

Python - 95

Tantangan besar. Saya pikir ini cukup pintar, dan sebenarnya solusi yang sah!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)
qwr
sumber
1
Bagus! Perhatikan ini secara teknis tidak berfungsi apa adanya karena Anda akhirnya menghapus baris baru saat membuat quine alternatif. membutuhkan sedikit penyesuaian TKI
Claudiu
3
@Claudiu Yah saya kira itu tergantung pada apakah OP menganggap baris baru sebagai karakter. Jika demikian, Anda bisa menambahkan baris baru di antara setiap baris. 96 karakter
qwr
Tentu saja baris baru adalah karakter ...
mbomb007
11

Golfscript, 5 poin

{hai}

adalah fungsi yang, ketika dieksekusi, akan menjalankan fungsi (tidak ada) hai. Ini tidak dieksekusi, namun dicetak ketika program berakhir - termasuk tanda kurung luar. Menghapus satu sama lain hasil karakter:

{a}

Lame, saya tahu :-)

John Dvorak
sumber
Saya percaya Anda memenuhi syarat untuk kedua bonus, juga: program Anda tidak membaca kode sumbernya sendiri, dan {}juga quine.
Ilmari Karonen
@IlmariKaronen sulit untuk mengatakan apa yang dianggap sebagai membaca kode sumber sendiri. Apakah fungsi yang tidak dievaluasi dihitung? Apakah mengevaluasi string penting? Adapun bonus lainnya - mungkin itu hanya kata-kata yang buruk, tapi saya membaca "hapus setiap empat karakter" sebagai "pertahankan setiap karakter kelima", yang akan membuat saya hanya memiliki satu braket (meskipun {ab0}memenuhi syarat jika 0dapat menjadi salah satu yang disimpan)
John Dvorak
Memang kata-kata itu buruk, tetapi contohnya menunjukkan itu berarti "pertahankan setiap karakter keempat". Pokoknya, seperti yang Anda perhatikan, {ab0}memenuhi syarat baik cara.
Ilmari Karonen
Tampaknya {hi}juga berfungsi, akan lebih pendek (4 karakter), dan juga akan memenuhi syarat untuk semua bonus. (Sepertinya skrip {idievaluasi {iuntuk beberapa alasan ...)
Claudiu
8

HQ9 + - 4 * 7.5 * 0.8 = 24 poin

Q+++

Masih quine dengan setiap karakter kedua:

Q+

... dan setiap kelima:

Q

Maaf, saya tidak bisa menolak. :)

Pemburu kecil
sumber
7

HTML / Penurunan Harga, 4 * 7,5 = 30

HHHH

Saya akui ini lumpuh, tetapi itu tidak benar-benar bertentangan dengan aturan dalam pertanyaan itu. Kecuali bahwa HTML / Markdown mungkin tidak dianggap sebagai bahasa pemrograman nyata.

n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
sumber
Saya kira saya tidak menentukan bahwa program yang tidak dapat dipisah lebih kecil tidak valid. Merevisi tantangan ...
Jwosty
@Jwosty: lalu "HHHH" dalam HTML akan menang. Catatan 5555tidak berfungsi karena tidak memiliki karakter alfabet
Claudiu
Anda membutuhkan karakter alfabet.
qwr
@ qwr: Lupa itu ketika melihat GolfScript. Dihapus.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
Hmm ... Saya kira ini berlaku: P
Jwosty
5

! / bin / sh

Saya sangat menyukai solusi qwr , saya tanpa malu-malu membuat port untuk shell POSIX. Tolong jangan menyimpannya di nama file yang mengandung spasi.

: '#';cat $0

#c a t   $ 0

Mulai menghapus di nomor karakter 1, dan hitung baris baru sebagai karakter. Quine kedua tentu saja:

 #;a 0
cat $0

Harap pilih jawaban qwr daripada yang ini!

joeytwiddle
sumber
3

Bash, 23

Newline adalah karakter!

Beberapa komentar berantakan, sehingga ketika setiap karakter lain mulai dari yang pertama dihapus, komentar menjadi kode dan kode menjadi komentar:

#cRaRtR R$R0R R#
cat $0

Setelah setiap karakter lain ( termasuk baris baru ) dihapus:

cat $0 #ct$

sumber
itu bukan quine jika membaca sumbernya sendiri.
daniero
@daniero "-15% jika solusi tidak membaca sumbernya dari mana saja dalam bentuk apapun" menyiratkan bahwa Anda sedang diizinkan untuk membaca sumber program (tetapi Anda tidak mendapatkan bonus)
@daniero oh saya melihat di wikipedia Saya kira itu curang ... tapi ini kode-golf
Saya selalu memelihara kucing!
Antonio Ragagnin
2

Brainf ** k, 37 - 15% = 31.45

Menyalahgunakan Interpreter Brainfuck Portabel

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

Mulai menghapus dari karakter kedua.

Timtech
sumber
Ketika saya menjalankan ini saya mendapatkan B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]sebagai output sehingga beberapa karakter kurang.
Sylwester
Apakah itu Brainfuck, atau dialek khusus dari Brainfuck yang hanya bekerja pada satu penerjemah?
user253751
@immibis Itu biasa (huruf kapital itu bisa berupa spasi atau simbol atau apa saja). Namun, Anda harus menggunakan juru bahasa portabel yang ditautkan dari jawabannya.
Timtech
1
Bagian pertama dibiarkan ke kiri hingga menemukan ÿ dan interpreter yang ditautkan terjadi untuk menyimpan kode 5000 byte sebelum dimulainya rekaman data. Brainfuck yang tidak mudah dibawa-bawa.
user253751
0

HQ9 + T, - 4 * 0,8 = 3,2 poin

qqqq

Ini quine yang valid (ish) dan quine setiap detik dan char kelima. Saya tidak bisa menolak. . . .

Gavriel Feria
sumber