Perjalanan Kembali di Quine

12

Tantangan di sini sederhana, dan tidak sama sekali tentang byte-count. Tugas Anda adalah menghasilkan 50 karakter pertama dari kode sumber kuine sebelumnya, digabungkan dengan 50 karakter pertama Anda dimulai dengan 50 karakter yang saya tempatkan di bawah:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

Jadi, mari kita ambil contoh di sini, jika Anda menjawab di 05AB1E, solusi untuk hanya output 50 byte pertama adalah:

ži50£

Yang berarti Anda harus menampilkan:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

Jika program Anda lebih pendek, cukup gunakan x < 50karakter pertama . Jika program Anda lebih lama hanya terdiri dari 50 karakter pertama, berakhir pada karakter ke-50. Orang berikutnya harus mengeluarkan 50 karakter pertama dari quine Anda yang digabungkan dengan kode mereka sendiri.

Kode Anda bisa berapa pun ukurannya, tetapi Anda hanya harus menampilkan 50 karakter pertama dari kode Anda yang digabungkan hingga akhir 50-byte pertama dari kode jawaban sebelumnya.


Pembatasan:

Ini menggunakan definisi quine yang tepat , dan, selain itu, hal-hal berikut:

  • Komentar sama sekali tidak diizinkan.
  • PERHATIAN MEMBERI BAGIAN INI, MUNGKIN DAPAT MENGUNGKAPKAN JIKA LOOPHOLES YANG MENGGANGGU

Cara Memposting Jawaban yang Dirantai:

  1. Poskan placeholder:
    • Sebutkan nomor jawaban Anda dan bahasa yang akan Anda gunakan.
  2. Sortir menurut tanggal, jika Anda melihat orang lain mengeposkan placeholder 1 milidetik sebelum Anda:
    • Hapus milikmu, tunggu kesempatan berikutnya, maaf.
  3. Jika Anda sudah mengamankan tempat berikutnya, TOLONG JAWAB DALAM 6 JAM :
    • Jika Anda tidak dapat menjawab, hapus ruang yang dipesan.
  4. JIKA ruang telah macet selama lebih dari 6 jam.
    • Pilih untuk menghapus ruang yang dipesan, saya akan menanganinya.

Format Posting Anda:

#[Answer #]:[Character Count] Characters, [Language Used]

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

Beberapa catatan khusus (Penting untuk Kemudahan Kompetisi):

  • Jika orang sebelum Anda memasukkan baris baru atau karakter non-ASCII dalam sumbernya, Anda dapat MEMPERGANTI mereka. Ini berarti itu x="a\nb"menjadi ab, di mana x[0]=a;x[1]=b;.
    • Anda harus menyatakan mutasi yang telah Anda terapkan ke sumber sebelumnya.
  • Semua karakter dihitung sebagai satu karakter, terlepas dari halaman kode atau pengodean bahasa. Tolong jangan gunakan byte-count, gunakan count-karakter.

Jawaban yang diterima akan menjadi 50thjawabannya, hanya karena; Maksudku, ini SE setelah semua.

Guci Gurita Ajaib
sumber
Mengapa komentar dilarang? Juga, alih-alih mendefinisikan ulang byte ke karakter, mengapa tidak menggunakan karakter saja?
CalculatorFeline
@ CalculatorFeline Saya pikir Anda bisa melakukan beberapa celah yang cukup lemah dan tidak menarik menggunakan komentar, tapi itu hanya saya. Cadangan tempat pertama dan buktikan saya salah dengan komentar dan saya akan mencabut larangan tersebut.
Magic Gurita Guci
5
Meta post tertaut yang mendefinisikan quine yang tepat tidak menyebutkan tidak memiliki kode mati.
Ørjan Johansen
1
Bagaimana Anda mendefinisikan komentar? Komentar bukanlah istilah yang didefinisikan dengan sangat baik.
Ad Hoc Garf Hunter
1
Anda juga tampaknya menukar istilah karakter dan byte, yang agak membingungkan. Saya tidak begitu yakin apakah ini 50 karakter atau byte pertama.
Ad Hoc Garf Hunter

Jawaban:

7

1: 96 Karakter, Haskell

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY:z=['`'..'z']++'A':['C'..'Y']
main=putStr$z++z

Cobalah online!


Saya merasa konyol, dan tidak melihat apa pun yang melarang entri pertama dimulai dengan 50 karakter yang sama persis dengan string awal.

  • ['`'..'z']++'A':['C'..'Y']adalah ekspresi yang mengevaluasi string karakter-karakter itu, dengan huruf `prepended.
  • Hasilnya adalah pola yang cocok, membuat variabel abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYsama dengan '`', dan zsama dengan 50 karakter.
  • main=putStr$z+z kemudian melakukan output yang sebenarnya.
Ørjan Johansen
sumber
Saya suka bagaimana tantangan ini dimulai dengan a-zA-Z dan sekarang pada dasarnya bukan alfabet lagi. Panggilan yang bagus untuk program pertama.
Magic Gurita Guci
5

5:76 karakter, Emojicode

🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACD🔤😀🍪a🔤🏁🍇🍦a❌🔤🔤🔪a 0 45🍪🍉

Cobalah online!


Penjelasan:

🏁🍇		👴 start
  🍦 a 🔤...🔤	👴 define variable a as that string
  😀    	👴 print:
    🍪		👴 combine those strings:
      a		👴 a, and:
      🔤🏁🍇🍦a❌🔤🔤	👴 string literal. the ❌🔤 works like \"
      🔪a 0 45	👴 between indexes 0 and 45 of a
    🍪
🍉		👴 end
betseg
sumber
1
Alfabet perlahan-lahan menghilang: O.
Magic Octopus Mm
Petunjuk pemformatan: Gunakan <pre><code>dan </code></pre>, maka Anda dapat menggunakan &#9;tab, yang sejajar seperti yang dimaksudkan bahkan dengan karakter lebar variabel seperti emoji. BTW, saya berpikir tentang cara membuat quine di Emojicode dan kemudian saya gulir ke bawah ...
NieDzejkob
@NieDzejkob ide bagus, terima kasih.
betseg
@Betseg sedikit tidak aktif di beberapa tempat untuk saya, tetapi lebih mudah dibaca. Senang Anda menyukainya
NieDzejkob
@NieDzejkob beberapa? dengan font saya hanya perintah string literal mati karena itu panjang, di mana lagi di ujung Anda?
betseg
4

2: 119 Karakter, Javascript

alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY'+`alert(eval(c=${JSON.stringify(c).substr(0,37)}`"))

Cobalah Online (gunakan console.logbukan alertuntuk keluaran)

Berdasarkan quine JS ini.

Versi lama (membaca kode sumber):

f=_=>`abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYf=${(f+"").substr(0,48)}`;alert(f())

Berdasarkan quine JS ini

SuperStormer
sumber
Ini bukan quine yang tepat sebagai fungsi referensi itu sendiri.
Shaggy
@Shaggy Saya menambahkan yang valid
SuperStormer
1
@Shaggy Fungsi referensial diri valid menurut definisi kami.
ATaco
3

8: 70 karakter, Stax

"v->{String t=`"⛽as=:'\`"alert(eval(c=\`"''abcdefghijk"c'".`"R34|S50(+

Jalankan dan debug online

Penjelasan

"..."c'".`"R34|S50(+
"..."                   The string from last output
     c'".`"R            Escape all double quotes
            34|S        Surround with double quotes
                50(     Take the first 50 characters
                   +    Append to the string from last output
                        Implicit output
Weijun Zhou
sumber
2

3:56 Karakter, SOGL

"alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJ”1#Οj

Coba Di Sini!

Penjelasan:

"...”      push the first 50 bytes of the previous answer
     1#Ο   wrap a quote around with that
        j  take the last letter off, as my answer has one more byte for the starting quote.

Jawaban Javascript memiliki kutipan di dalamnya, jadi saya harus menambahkan kutipan awal, tetapi karena ini bukan kode-golf, tidak masalah.

dzaima
sumber
2

4:81 karakter, J

s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACDEFGHI'
echo s,50{.'s=:',quote s

Cobalah online!


Conor O'Brien
sumber
2

7: 137 karakter, Java 8

v->{String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";return t+("v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}

Cobalah online.

Penjelasan:

v->{        // Method with empty unused parameter and String return-type
  String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";
            //  String containing the first 50 characters of the previous answer
  return t  //  Return those first 50 characters
   +"v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}
            //  Concatted with the first 50 characters of my answer
            //  with correct escape-slashes
Kevin Cruijssen
sumber
Aha! Saya pikir Emoji membunuh tantangan ini untuk selamanya. Bagus
Magic Gurita Guci
@MagicOctopusUrn Saya baru sekarang memperhatikan aturan Anda tentang " Jika orang sebelum Anda memasukkan karakter baru atau karakter non-ASCII di sumbernya, Anda dapat MENGGANTI mereka. ", Jadi jawaban dapat menghilangkan Emoji jika mereka mau. Untuk jawaban saya, tidak masalah, karena kita menghitung karakter daripada byte.
Kevin Cruijssen
Itu dan ini bukan tentang jumlah karakter jujur, dan ya saya lupa tentang aturan itu (apalagi lupa tentang tantangan secara umum).
Magic Octopus Urn
Jujur, kalau dipikir-pikir, ini benar-benar bukan tantangan quine sama sekali kan?
Magic Octopus Urn
@ MagicOctopusUrn Sepertinya itu. Anda pada dasarnya mendapatkan 50 karakter pertama dari quine Anda. Dalam Java quines biasanya dibentuk dengan meletakkan kode sumber yang tidak diformat dalam sebuah String, dan kemudian memformat / keluar dengan benar tanda kutip ganda dan garis miring. Hanya fungsi lambda quine dasar di Java 8 sudah 88 byte ( Coba online ), jadi di Jawa tantangan ini jauh lebih pendek tanpa menggunakan quine penuh. Saya dapat membayangkan quine adalah pendekatan terbaik dalam kebanyakan bahasa.
Kevin Cruijssen
1

6: 70 karakter, Emoji

⛽as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzAC🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡

Cobalah online!

Tampaknya tidak mungkin membuatnya tidak menampilkan baris baru. Jika itu tidak apa-apa maka saya akan menghapus jawabannya.

Penjelasan:

⛽ ... 🚘	String literal
👥		Duplicate
💬⛽💬		Push ⛽ as a string
🔀		Swap the top two strings. Stack: [long literal] "⛽" [long literal]
👫		Concatenate.
💬0💬📥💬-1💬📥✂	Remove the last character
👫		Concatenate.
➡		Print.
NieDzejkob
sumber
Bukankah seharusnya begitu ⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡? Jawaban Emojicode betseg tidak dimulai dengan as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACtetapi dengan 🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxsebagai gantinya.
Kevin Cruijssen
@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob
Ah, saya melewatkan aturan itu .. Kalau begitu saya akan memperbarui jawaban saya.
Kevin Cruijssen
Karena penasaran, mengapa Anda menelanjangi mereka? Untuk mempermudah jawaban di masa mendatang? Karena kode Anda berjalan dengan sempurna tanpa menghapus Emoji dari jawaban sebelumnya: Coba di sini .
Kevin Cruijssen
@KevinCruijssen Sudah setengah tahun yang lalu. Saya tidak ingat.
NieDzejkob
1

12: 202 karakter, Ruby

puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7).gsub('0','>').gsub('1','+').gsub('2','-').gsub('3','<').gsub('4','[').gsub('5','.').gsub('6',']')+'puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7'

Cobalah online!


Mengkodekan lima puluh karakter pertama dari jawaban sebelumnya di basis tujuh

  • 0:>
  • 1: +
  • 2: -
  • 3: <
  • 4: [
  • 5:.
  • 6:]

Kemudian konversikan ke basis 36 untuk mendapatkan "21ipdgmtwkkke7ynvzpcnlzt7kl"

Alex Allen
sumber
0

9: 55 karakter, Jelly

“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefg”;”“;

Cobalah online!


Saya menghapus karakter non-ASCII dari output karena diizinkan dan Jelly mengabaikannya.

Penjelasan

Ini dimulai dengan string literal dari 50 karakter pertama (minus ) dari jawaban sebelumnya kemudian menambahkan karakter ke dalamnya dengan ;”“kemudian menambahkan string literal asli ke akhir lagi dengan final ;. Sejak sebuah karakter dihapus, 50 karakter pertama dari kode sumber saya adalah 49 dari jawaban sebelumnya dengan di depan yang memungkinkan program ini menjadi sangat singkat. (Ya saya menyadari ini bukan tapi mengapa tidak golf jika Anda bisa?)

dylnan
sumber
0

10: 116 Karakter, Python 3

print('''“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefgprint(\'\'\'“"v->{String t=`"as=:'\`"alert(eval(c=\`"''')

Cukup cetak string yang terdiri dari 50 karakter pertama dari jawaban 9, diikuti oleh 50 karakter pertama dari sumbernya sendiri. Tidak diperlukan kepintaran seperti quine, karena kutipan yang lolos ( \'\'\') muncul setelah karakter ke-50 dan karenanya tidak perlu direproduksi dalam output.

Metode ini akan bekerja dalam hampir semua bahasa - Anda hanya perlu menghindari karakter kutipan yang muncul dalam jawaban sebelumnya. Oleh karena itu, saya tidak berpikir ada banyak tantangan dalam tantangan ini.

Nathaniel
sumber
0

11: 723 Karakter, Brainf ***

+[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.[[-]<]++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

Karakter dilucuti tidak patut dicetak . Hampir sepenuhnya dihasilkan oleh Brainfuck Text Generator . Mungkin juga malas, kan?

TIO

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.
Panda0nEarth
sumber
Anda tampaknya mencetak karakter ke-2 hingga ke-51 dari jawaban Brainfuck Anda alih-alih 50 pertama (tidak ada yang pertama >): Cobalah secara online. Juga, Anda mungkin ingin menghapus karakter, karena jawaban Brainfuck Anda saat ini mengeluarkannya sebagai tidak dapat ditulis ``.
Kevin Cruijssen
Pada >awalnya tampaknya merupakan penambahan yang tidak disengaja, dan saya menjatuhkan karakter. Berdasarkan jawaban lain, saya pikir itu berarti saya hanya perlu mencetak 49 karakter pertama.
Panda0nEarth