Quine'de Seyahat


12

Buradaki zorluk basittir ve bayt sayımı ile ilgili değildir. İşiniz, önceki yerleştirdiğiniz kaynak kodun ilk 50 karakterini, aşağıda yerleştirdiğim 50 karakterle başlayarak ilk 50 karakterinizle birleştirmektir:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

Öyleyse, burada bir örnek alalım, 05AB1E'de cevaplayacak olsaydınız, ilk 50 baytın çıktısını almak için bir çözüm şöyle olurdu:

ži50£

Bu da çıktı almanız gerektiği anlamına gelir:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

Programınız daha kısaysa, ilk x < 50karakterleri kullanın . Programınız daha uzunsa yalnızca ilk 50 karakteri birleştirin ve 50. karakterle bitirin. Bir sonraki kişi daha sonra kendi kodunuzla birleştirilmiş quine'nizin ilk 50 karakterini çıkarmalıdır.

Kodunuz herhangi bir boyutta olabilir, ancak kodunuzun yalnızca önceki yanıt kodunun ilk 50 baytının sonuna kadar birleştirilen ilk 50 karakterini çıktılamanız gerekir.


Kısıtlamalar:

Bu, uygun bir kinin tanımını ve buna ek olarak aşağıdakileri kullanır:

  • Yorumlara tamamen izin verilmiyor.
  • BU BÖLÜME DİKKAT EDİN, KORUNMAYAN LOOFOLLAR ARISI OLURSA EVRİM OLABİLİR

Zincirleme Cevap Nasıl Gönderilir:

  1. Bir yer tutucu gönderin:
    • Cevap numaranızı ve kullanacağınız dili belirtin.
  2. Tarihe göre sırala, bir başkasının sizden 1 milisaniye önce bir yer tutucu gönderdiğini fark ederseniz:
    • Sizinkini silin, bir sonraki fırsatı bekleyin, üzgünüm.
  3. Bir sonraki noktayı güvence altına aldıysanız, 6 SAAT İÇİNDE LÜTFEN LÜTFEN :
    • Yanıtlayamıyorsanız, ayrılmış alanınızı kaldırın.
  4. Alan 6 saatten fazla tutulmuşsa.
    • Ayrılmış alanı silmek için oy verin, ben hallederim.

Yazı Biçiminiz:

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

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

Bazı özel notlar (Rekabet Kolaylığı için Önemli):

  • Önünüzdeki kişi kaynağına satır başları veya ASCII olmayan karakterler eklediyse, bunları ÇİZGİSİNİZ. Bu demektir ki , nerede x="a\nb"olur . abx[0]=a;x[1]=b;
    • Önceki kaynağa uyguladığınız mutasyonu belirtmeniz gerekir.
  • Kod sayfaları veya dil kodlamasına rağmen tüm karakterler tek bir karakter olarak sayılır. Lütfen byte-count kullanmayın, karakter-count kullanın.

Kabul edilen cevap 50th, sadece; Demek istediğim, daha sonra SE.


Yorumlar neden yasaklandı? Ayrıca, baytları karakterlere yeniden tanımlamak yerine, neden sadece karakterleri kullanmıyorsunuz?
CalculatorFeline

@CalculatorFeline Bence yorum kullanarak bazı oldukça topal ve ilginç boşluklar yapabilirsiniz, ama bu sadece benim. İlk noktayı rezerve et ve bana bir yorumla yanlış olduğunu kanıtla ve yasağı kaldırırım.
Sihirli Ahtapot Urn

5
Uygun sorguları tanımlayan bağlantılı meta yazı, geçersiz kod içermediğinden bahsetmez.
Ørjan Johansen

1
Yorumu nasıl tanımlıyorsunuz? Yorum çok iyi tanımlanmış bir terim değildir.
Ad Hoc Garf Hunter

1
Ayrıca biraz kafa karıştırıcı olan karakter ve bayt terimlerini değiştiriyor gibi görünüyorsunuz. İlk 50 karakter mi yoksa bayt mı olduğundan emin değilim.
Ad Hoc Garf Hunter

Yanıtlar:


7

1: 96 Karakter, Haskell

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

Çevrimiçi deneyin!


Kendimi aptalca hissettim ve ilk dizeyle aynı 50 karakterle başlayan ilk girişi yasaklayan hiçbir şey görmedim .

  • ['`'..'z']++'A':['C'..'Y'], bu karakterlerin dizesini, önceden `eklenmiş olarak değerlendiren bir ifadedir .
  • Sonuç desen değişken hale üzerinde eşlemeliyse abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYiçin eşit '`'ve z50 karaktere eşittir.
  • main=putStr$z+z sonra gerçek çıkışı yapar.

Bu zorluğun a-zA-Z ile nasıl başladığını seviyorum ve artık temelde artık alfabe değil. 1. program için iyi bir çağrı.
Sihirli Ahtapot Urn

5

5:76 karakter, Emojicode

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

Çevrimiçi deneyin!


Açıklama:

🏁🍇		👴 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
Alfabe yavaş yavaş kayboluyor: O.
Sihirli Ahtapot Urn

Biçimlendirme ipucu: <pre><code>ve tuşlarını kullanın </code></pre>, ardından &#9;emoji gibi değişken genişlikli karakterlerle bile istenen şekilde hizalanan sekmeler için kullanabilirsiniz . BTW, Emojicode'da nasıl bir kine yapacağımı düşünüyordum ve sonra aşağı kaydırdım ...
NieDzejkob

@NieDzejkob iyi fikir, teşekkürler.
17'de

@betseg benim için birkaç yerde biraz kapalı, ama yine de daha okunabilir.
Sevdim

@NieDzejkob birkaç? benim yazı tipi ile sadece dizgi hazır komut komutu kapalı çünkü uzun, başka nerede son?
17'de

4

2: 119 Karakterler, Javascript

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

Çevrimiçi Deneyin ( çıktı almak console.logyerine kullanır alert)

Bu JS quine dayanarak .

Eski sürüm (kaynak kodunu okur):

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

Bu JS sorgusuna dayanarak


İşlev kendisine referansta bulunduğundan, bu uygun bir soru değildir.
Shaggy

@Shaggy Geçerli bir tane ekledim
SuperStormer

1
@Shaggy Kendine referans işlevleri bizim tanımımızla geçerlidir.
ATaco

3

8: 70 karakter, Stax

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

Çevrimiçi çalıştır ve hata ayıkla

açıklama

"..."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 Karakterler, SOGL

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

Buradan Deneyin!

Açıklama:

"...”      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.

Javascript cevap içinde bir teklif vardı, bu yüzden bir başlangıç ​​teklifi eklemek zorunda kaldı, ama bu kod golf değil gibi, önemli değil.



2

7: 137 karakter, Java 8

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

Çevrimiçi deneyin.

Açıklama:

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! Emoji'nin bu mücadeleyi iyice öldürdüğünü düşündüm. Güzel.
Sihirli Ahtapot Urn

@MagicOctopusUrn Artık " Sizden önceki kişi kaynaklarına satırsonu veya ASCII olmayan karakterler eklediyse, onları ÇİZGİSİNİZ" konusundaki kuralınızı görüyorum. Cevabım için her iki şekilde de önemli değil, çünkü yine de bayt yerine karakter sayıyoruz.
Kevin Cruijssen

Bu ve dürüstçe karakter miktarıyla ilgili değil ve evet bu kuralı unuttum (dahası genel olarak meydan okumayı unuttum).
Sihirli Ahtapot Urn

Dürüst olmak gerekirse, düşünmeye gel, bu gerçekten hiç de bir meydan okuma değil mi?
Sihirli Ahtapot Urn

@MagicOctopusUrn Bu biraz. Temel olarak, sorgunuzun ilk 50 karakterini alırsınız. Java'da tırnaklar genellikle biçimlendirilmemiş kaynak kodunu bir Dizeye yerleştirerek ve daha sonra çift tırnak ve eğik çizgileri doğru bir şekilde biçimlendirir / kaçar. Java 8'deki temel quine lambda işlevi zaten 88 bayttır ( çevrimiçi deneyin ), bu yüzden Java'da bu zorluk tam bir quine kullanmadan çok daha kısadır. Yine de, çoğu dilde kinin en iyi yaklaşım olduğunu hayal edebiliyorum.
Kevin Cruijssen

1

6: 70 karakter, Emoji

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

Çevrimiçi deneyin!

Sondaki satırsonu çıktısını almamak imkansız görünüyor. Bu uygun değilse cevabı kaldıracağım.

Açıklama:

⛽ ... 🚘	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.

Bunun ⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡yerine değil mi? betseg 'ın Emojicode cevap ile başlamaz as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACfakat 🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxonun yerine.
Kevin Cruijssen

@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob

Ah, bu kuralı kaçırdım .. Bu durumda cevabımı güncelleyeceğim.
Kevin Cruijssen

Meraktan, neden onları soydun? Gelecekteki cevapları kolaylaştırmak için? Kodunuz önceki cevabın Emojilerini soymadan mükemmel çalıştığı için: Burada deneyin .
Kevin Cruijssen

@KevinCruijssen Yarım yıl önceydi. Hatırlamıyorum.
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'

Çevrimiçi deneyin!


Yedinci tabandaki önceki cevabın ilk elli karakterini kodlar

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

Sonra "21ipdgmtwkkke7ynvzpcnlzt7kl" elde etmek için 36 tabanına dönüştürür


0

9: 55 karakter, Jelly

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

Çevrimiçi deneyin!


ASCII olmayan karakteri çıkıştan kaldırdım, çünkü izin verildi ve Jelly bunu görmezden geliyordu.

açıklama

Bu , bir önceki cevabın ilk 50 karakterinin (eksi ) dize değişmeziyle başlar, sonra karakteri ona ;”“ekler ve ardından orijinal dize değişmezini son ile tekrar sonuna ekler ;. Bir karakter kaldırıldığından, kaynak kodumun ilk 50 karakteri, bir önceki cevaptan 49'du ve bu programın çok kısa olmasına izin veren bir ön. (Evet, bunun olmadığını anlıyorum ama neden golf yapmıyorsunuz?)


0

10: 116 Karakter, Python 3

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

Cevap 9'un ilk 50 karakterinden sonra kendi kaynağının ilk 50 karakterinden oluşan bir dize yazdırmanız yeterlidir. Hiçbir kine benzeri zekâya gerek yoktur, çünkü \'\'\'50. karakterden sonra kaçan tırnak işaretleri ( ) görünür ve bu nedenle çıktıda çoğaltılmasına gerek yoktur.

Bu yöntem hemen hemen her dilde çalışacaktır - bir önceki yanıtta görünen alıntı karakterlerden kaçmanız yeterlidir. Buna göre, bu mücadelede çok fazla zorluk olduğunu düşünmüyorum.


0

11: 723 Karakterler, Brainf ***

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

Yazdırılamayan karakter çıkarıldı . Neredeyse tamamen Brainfuck Text Generator tarafından üretilir . Tembel de olabilir, değil mi?

TIO

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

İlk 50 yerine Brainfuck cevabınızın 2. ila 51. karakterlerini yazdırıyorsunuz (birincisi eksik >): Çevrimiçi deneyin. Ayrıca, Brainfuck cevabınız şu anda yazdırılamaz olarak çıktığı için karakteri bırakmak isteyebilirsiniz ''.
Kevin Cruijssen

>Başında kazara ilave olmuş görünüyor ve düştü karakter. Diğer cevaplara dayanarak, bunun sadece ilk 49 karakteri yazdırmam gerektiğini düşünüyorum.
Panda0nEarth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.