Podróż z powrotem w Quine

12

Wyzwanie tutaj jest proste i wcale nie dotyczy liczenia bajtów. Twoim zadaniem jest wyprowadzenie pierwszych 50 znaków kodu źródłowego poprzedniej quiny, połączonych z twoimi 50 pierwszymi znakami, zaczynając od 50 znaków, które umieściłem poniżej:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

Weźmy tutaj przykład, jeśli miałbyś odpowiedzieć w 05AB1E, rozwiązaniem po prostu wypisania pierwszych 50 bajtów byłoby:

ži50£

Co oznaczałoby, że musisz wygenerować:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

Jeśli twój program jest krótszy, po prostu użyj pierwszych x < 50znaków. Jeśli twój program jest dłuższy, połącz tylko pierwsze 50 znaków, kończąc na 50 znaku. Następna osoba będzie musiała wypisać pierwsze 50 znaków twojej quine połączonej z własnym kodem.

Twój kod może mieć dowolny rozmiar, ale powinieneś wypisać tylko pierwsze 50 znaków kodu połączonych z końcem pierwszych 50 bajtów kodu poprzedniej odpowiedzi.


Ograniczenia:

W tym celu użyto definicji właściwego quine , a ponadto następujące rzeczy:

  • Komentarze są całkowicie zabronione.
  • Zwróć uwagę na tę sekcję, MOŻE EWOLUOWAĆ, JEŻELI ABUSIVE LOOPHOLES POWSTANIE

Jak opublikować łańcuchową odpowiedź:

  1. Opublikuj symbol zastępczy:
    • Podaj swój numer odpowiedzi i język, którego będziesz używać.
  2. Sortuj według daty, jeśli zauważysz, że ktoś opublikował symbol zastępczy 1 milisekundę przed tobą:
    • Usuń swoje, poczekaj na następną okazję, przepraszam.
  3. Jeśli zabezpieczyłeś następne miejsce, PROSZĘ ODPOWIEDŹ W CIĄGU 6 GODZIN :
    • Jeśli nie możesz odpowiedzieć, usuń zarezerwowane miejsce.
  4. JEŚLI przestrzeń była zajęta przez ponad 6 godzin.
    • Głosuj, aby usunąć zarezerwowane miejsce, zajmę się tym.

Twój format wiadomości:

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

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

Niektóre szczegółowe uwagi (ważne dla ułatwienia konkurencji):

  • Jeśli osoba przed Tobą umieściła w swoim źródle znaki nowej linii lub znaki spoza ASCII, możesz PASOWAĆ je. Oznacza to, że x="a\nb"staje się ab, gdzie x[0]=a;x[1]=b;.
    • Musisz podać mutację zastosowaną do poprzedniego źródła.
  • Wszystkie znaki są liczone jako pojedynczy znak, pomimo stron kodowych lub kodowania języka. Nie używaj licznika bajtów, używaj liczenia znaków.

Przyjęta odpowiedź będzie 50thodpowiedzią tylko dlatego, że; W końcu to SE.

Urna Magicznej Ośmiornicy
źródło
Dlaczego komentarze są zakazane? Ponadto zamiast redefiniować bajty na znaki, dlaczego po prostu nie używać znaków?
CalculatorFeline
@CalculatorFeline Myślę, że przy pomocy komentarzy możesz zrobić całkiem kiepskie i nieciekawe luki, ale to tylko ja. Zarezerwuj pierwsze miejsce i udowodnij, że się mylę komentarzem, a ja zniosę zakaz.
Magic Octopus Urn
5
Powiązany meta post określający prawidłowe quinesy nie zawiera wzmianki o braku niedziałającego kodu.
Ørjan Johansen
1
Jak definiujesz komentarz? Komentarz nie jest zbyt dobrze zdefiniowanym terminem.
Ad Hoc Garf Hunter
1
Wydaje się również, że zamieniasz znak i bajt, co jest nieco mylące. Nie jestem pewien, czy to pierwsze 50 znaków lub bajtów.
Ad Hoc Garf Hunter

Odpowiedzi:

7

1: 96 znaków, Haskell

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

Wypróbuj online!


Czułam się głupio i nie widziałam nic, co zabraniałoby pierwszego wpisu, zaczynając od dokładnie tych samych 50 znaków, co początkowy ciąg.

  • ['`'..'z']++'A':['C'..'Y']jest wyrażeniem oceniającym na ciąg tych znaków, z `dopiskiem.
  • Wynik jest dopasowywany do wzorca, dzięki czemu zmienna jest abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYrówna '`'i zrówna 50 znakom.
  • main=putStr$z+z następnie robi rzeczywiste wyjście.
Ørjan Johansen
źródło
Uwielbiam, jak to wyzwanie zaczęło się od a-zA-Z, a teraz w zasadzie nie jest już alfabetem. Dobra rozmowa w 1. programie.
Magic Octopus Urn
5

5:76 znaków, Emojicode

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

Wypróbuj online!


Wyjaśnienie:

🏁🍇		👴 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
źródło
1
Alfabet powoli znika: O.
Magic Octopus Urn
Wskazówka dotycząca formatowania: Użyj <pre><code>i </code></pre>, a następnie możesz użyć &#9;dla kart, które wyrównują się zgodnie z przeznaczeniem, nawet ze znakami o zmiennej szerokości, takimi jak emoji. BTW, myślałem o tym, jak zrobić quine w Emojicode, a następnie przewinąłem w dół ...
NieDzejkob
@NieDzejkob dobry pomysł, dzięki.
betseg
@betseg jest dla mnie trochę nie w porządku, ale i tak jest bardziej czytelny. Cieszę się, że ci się podobało
NieDzejkob,
@NieDzejkob kilka? z moją czcionką tylko polecenie literału łańcuchowego jest wyłączone, ponieważ jest długie, gdzie jeszcze na twoim końcu?
betseg
4

2: 119 znaków, JavaScript

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

Wypróbuj online (używa console.logzamiast alertwyświetlać)

Na podstawie tego JS quine.

Stara wersja (czyta kod źródłowy):

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

Na podstawie tego JS quine

SuperStormer
źródło
To nie jest odpowiednia liczba, ponieważ funkcja odwołuje się do samej siebie.
Kudłaty
@Shaggy Dodałem prawidłowy
SuperStormer
1
@Shaggy Funkcje autoreferencyjne są ważne z naszej definicji.
ATaco
3

8: 70 znaków, Stax

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

Uruchom i debuguj online

Wyjaśnienie

"..."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
źródło
2

3:56 Znaki, SOGL

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

Wypróbuj tutaj!

Wyjaśnienie:

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

Odpowiedź JavaScript zawierała cytat, więc musiałem dodać cytat początkowy, ale ponieważ nie jest to golf kodowy, nie ma to znaczenia.

dzaima
źródło
2

4:81 znaków, J

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

Wypróbuj online!


Conor O'Brien
źródło
2

7: 137 znaków, Java 8

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

Wypróbuj online.

Wyjaśnienie:

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
źródło
Aha! Uznałem, że Emoji zabił to wyzwanie na dobre. Niezłe.
Magic Octopus Urn
@MagicOctopusUrn Dopiero teraz zauważam twoją regułę dotyczącą: „ Jeśli osoba, która przed tobą umieściła w swoim źródle znaki nowej linii lub znaki spoza ASCII, możesz PASOWAĆ je. ”, Więc odpowiedź może pozbyć się emotikonów, jeśli chcą. Dla mojej odpowiedzi nie ma to żadnego znaczenia, ponieważ i tak liczymy znaki zamiast bajtów.
Kevin Cruijssen
To nie dotyczy szczerej liczby postaci i tak, zapomniałem o tej zasadzie (zresztą ogólnie zapomniałem o wyzwaniu).
Magic Octopus Urn
Szczerze mówiąc, pomyśl o tym, to naprawdę nie jest żadne wyzwanie, prawda?
Magic Octopus Urn
@MagicOctopusUrn It kinda is. Zasadniczo dostajesz pierwsze 50 znaków swojego quine. W języku Java quiny są zwykle tworzone przez umieszczenie niesformatowanego kodu źródłowego w łańcuchu, a następnie prawidłowe formatowanie / unikanie podwójnych cudzysłowów i ukośników. Jednak podstawowa funkcja quine lambda w Javie 8 ma już 88 bajtów ( Wypróbuj online ), więc w Javie to wyzwanie jest znacznie krótsze bez użycia pełnego quine. Ale mogę sobie wyobrazić, że quine jest najlepszym podejściem w większości języków.
Kevin Cruijssen
1

6: 70 znaków, Emoji

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

Wypróbuj online!

Wydaje się, że nie można sprawić, by nie wyświetlał końcowego znaku nowej linii. Jeśli to nie w porządku, usunę odpowiedź.

Wyjaśnienie:

⛽ ... 🚘	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
źródło
Czy nie powinno tak być ⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡? Odpowiedź Emojiicode betsega nie zaczyna się od, as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACale 🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxzamiast.
Kevin Cruijssen
@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob
Ach, tęskniłem za tą zasadą. W takim razie zaktualizuję swoją odpowiedź.
Kevin Cruijssen
Z ciekawości dlaczego je rozebrałeś? Aby ułatwić przyszłe odpowiedzi? Ponieważ Twój kod działa idealnie bez usuwania emoji z poprzedniej odpowiedzi: Wypróbuj tutaj .
Kevin Cruijssen
@KevinCruijssen To było pół roku temu. Nie pamiętam
NieDzejkob,
1

12: 202 znaków, 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'

Wypróbuj online!


Koduje pierwsze pięćdziesiąt znaków poprzedniej odpowiedzi w bazie siódmej

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

Następnie konwertuje go do bazy 36, aby uzyskać „21ipdgmtwkkke7ynvzpcnlzt7kl”

Alex Allen
źródło
0

9: 55 znaków, galaretka

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

Wypróbuj online!


Usunąłem znak wyjściowy inny niż ASCII, ponieważ jest to dozwolone, a Jelly go ignorowała.

Wyjaśnienie

Zaczyna się od literału łańcuchowego pierwszych 50 znaków (minus ) poprzedniej odpowiedzi, następnie dodaje znak do niego, a ;”“następnie dołącza oryginalny literał łańcuchowy do końca z końcem ;. Ponieważ znak został usunięty, pierwsze 50 znaków mojego kodu źródłowego to 49 z poprzedniej odpowiedzi z napisem na początku, co pozwala na tak krótki program. (Tak, zdaję sobie sprawę, że to nie jest ale dlaczego nie grać w golfa, jeśli możesz?)

dylnan
źródło
0

10: 116 znaków, Python 3

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

Wystarczy wydrukować ciąg składający się z pierwszych 50 znaków odpowiedzi 9, a następnie pierwszych 50 znaków z własnego źródła. Nie jest potrzebna sprytność podobna do quine, ponieważ uciekające się cudzysłowy ( \'\'\') pojawiają się po 50 znaku i dlatego nie muszą być odtwarzane na wyjściu.

Ta metoda będzie działać praktycznie w każdym języku - wystarczy uciec od znaków cudzysłowu pojawiających się w poprzedniej odpowiedzi. W związku z tym nie sądzę, aby było w tym wyzwaniu duże wyzwanie.

Nataniel
źródło
0

11: 723 Postacie, Brainf ***

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

Obnażony znak niezadrukowany Prawie całkowicie wygenerowany przez Brainfuck Text Generator . Równie dobrze może być leniwy, prawda?

TIO

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.
Panda0nEarth
źródło
Wydaje się, że zamiast od 50 pierwszych drukujesz od 2 do 51 znaków w odpowiedzi Brainfuck (brakuje pierwszej >): Wypróbuj online. Możesz także upuścić postać, ponieważ twoja odpowiedź Brainfuck obecnie wyświetla ją jako niedrukowalną ``.
Kevin Cruijssen
Na >początku wydaje się, że był to przypadkowy dodatek, więc porzuciłem postać. Na podstawie innych odpowiedzi uważam, że to oznacza, że ​​muszę wydrukować tylko 49 pierwszych znaków.
Panda0nEarth