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.


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.

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

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


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

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.



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

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.

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"


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?)


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.


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 [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.