Ters-tırnak-quine


29

Bu zorluğun beklentisi:

  • Programınız normal çalışıyorsa, konuşma işaretlerindeki ( "- çift tırnak) kodun tümü yazdırılmalıdır.
  • Programınız çift tırnak içine alınmışsa (sırayla konuşma işaretlerini ters çeviriniz), normalde tırnak içinde olmayan kodun yazdırılması gerekir.

Örneğin:

Diyelim ki aşağıdaki kodunuz var:

fancyStuff("myCode"); "I like".isGreat();

Eğer çalıştırırsam, çıktısını beklerdim:

myCode
I like

Ancak, tırnak işaretleri içine alırsam, şunu alırdım:

"fancyStuff("myCode"); "I like".isGreat();"

Bu kod çalıştırıldığında, beklenen çıktı şöyle olur:

fancyStuff(
); 
.isGreat();

Açıkçası, yukarıdaki örnek herhangi bir dilde işlevsel bir cevap değildir. İşiniz bu şekilde performans gösteren kodu yazmaktır.

kurallar

  • Standart boşluklar uygulanır.
  • Hem alıntı hem de alıntı olmayan biçimlerde yazdırılan değerler boş olmamalıdır veya yalnızca boşluktan oluşmalıdır. Bu aynı zamanda tüm programların en az bir teklif grubu içermesi gerektiği anlamına gelir.
  • Bununla birlikte, takip eden / ön-boşluk beyazlığına izin verilir.
  • Kendi koduna bakmak yok, gerekli dosya adları vb.
  • Eşleşmeyen tekliflere izin verilmez
  • Birden çok dize varsa, bunlar (örnekte olduğu gibi) yeni satırlar olarak veya başka bir insan tarafından okunabilir şekilde basılabilir - diziler veya nesneler yok
  • Bu , bayt cinsinden en kısa cevap kazanır.

Eşsiz tekliflere izin veriliyor mu ve öyleyse, nasıl kullanılmaları gerekir?
negatif yedi

3
@GezaKerecsenyi Yani, bir ayırıcı gerekli mi, yoksa basitçe dizeleri birleştirebilir miyiz?
Outgolfer Erik,

9
Nasıl bir dizidir değil , bir insan okunabilir formatı?
Buğday Sihirbazı,

4
Dizgiler kodumuzda göründükleri sırayla verilmelidir mi?
Shaggy

1
Bence tırnak içinde olmayan her şeyi yazdırmak zorunda kalırsanız, bu biraz daha karmaşık olurdu
Jo King

Yanıtlar:


28

Python 2 , 20 bayt

print";print'print'"

Tsh sayesinde -7 bayt

Çevrimiçi deneyin!


Eski cevap:

Python 2,27 bayt

'';print";print 2*"'';print

Çevrimiçi deneyin!

Bu cevabın arkasındaki düşünce treni:

Basit bir baskıyla başlayın, çünkü bir şeyler basmamız gerekiyor .

print"a"

Ayrıca, ters çevrilmiş durumda da bir şeyler basmamız gerekiyor. tırnak içinde bir baskı al.

print"print"

Ters çevrilmemiş durum bu noktada oldukça iyidir. Enverted olaya odaklanalım. Şimdi printhemen bir print ifadesiyle takip edilemeyen dizgeden başlıyoruz . Bunu noktalı virgülle düzeltelim.

print";print"

İyi şeyler. Ancak, ters çevrilmiş kod aslında hiçbir şey yazdırmıyor. printBaşlangıçta yazdırmamız gerekecek , çünkü tırnak işaretleri içinde bitiyor, aynı zamanda ikinci fiyat teklifinden sonra gelenleri de yazdırıyoruz, çünkü tırnak işaretleri içinde de bitiyor. Bunun etrafındaki açık yol print, son dizgiyi 2 ile eklemek ve çarpmaktır.

print";print 2*"print

Şimdi, ters çevrilmiş kod iyi çalışıyor, ancak ilk teklif öncesi bölüm ve ikinci teklif sonrası bölümün gelecekteki değişiklikler boyunca aynı kalması gerektiğine dikkat etmemiz gerekiyor. Ters çevrilmemiş kod ise, bir sözdizimi hatası verir - ifadeleri ayırmak için bir kez daha noktalı virgül eklememiz gerekir.

;print";print 2*";print

Python bu yalnız noktalı virgülün görünüşünü gerçekten sevmiyor, bu yüzden yılanın açlığını, ilk noktalı virgülden ve son noktalı virgülden önce eklenen aynı no-op ifadesinden ikisiyle tatmin etmeliyiz. Çoğu durumda ifadeler ilk durumda iyi çalışır, ancak ikinci durumda print";print 2*"ters çevrilmemiş kodda hiçbir şey bozulmadan uyması gerekir . ''Önceki dize ile birleştirilen basitçe kullanabiliriz .

'';print";print 2*"'';print

5
print(";print('print()');")Ayrıca 27 bayt ve ayrıca Python 3'tür
TSH

2
@tsh Bu kod, 20 saniyelik bir Python 2 çözümünü ortaya çıkarıyor, açık görüşlü, çok hoş olmalı!
negatif 7

19

CSS, 66 bayt

body:after{content:"{}body:after{content:'body:after{content:}'}"}

"body:after{content:"{}body:after{content:'body:after{content:}'}"}"

Çok fazla soru CSS tarafından çözülemez ...


O görünüyor body:afterbazı uygulamalarda çalışır ayrıca?
Shieru Asakoto

@ShieruAsakoto Haklısın. :afterçoğu tarayıcıda geriye dönük uyumluluk nedeniyle kullanılabilir
tsh

@Shaggy Ancak, hem HTML hem de CSS sağlandığında "kaynak kodunuzu tırnak işaretleri ile sarma" işlevinin nasıl çalıştığını tanımlamak zordur.
tsh,

@tsh Sorun değil - benzersiz bir cevap beklemiyordum çünkü kurallardaki birden fazla dosya hakkında bir şey belirtmedim!
Geza Kerecsenyi

10

HQ9 + [aşağıdaki notlara bakınız] , 1016 bayt

"Selam Dünya""""""""""""""""""""""""""""""""""""""""""""""" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""""""""""""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""""""""""""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""""""""""""Selam Dünya"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" """"""""""""""""""""""""""""""""""""""Selam Dünya"""""""""""""""""""""""""""""""""""Selam Dünya"""""""""""""""""""""""""""""""""""Selam Dünya

Uygulamayı https://esolangs.org/w/index.php?title=HQ9%2B&oldid=59995 adresinde kullanın ve tercümanı Windows'ta MinGW GCC 5.3.0 ile derleyin. Programın sonlandırılması için C'nin tanımsız bir davranışı gerektiğinden, diğer derleyici sürümüyle çalıştığından emin değilim. Tampon 1000 bayt uzunluğundadır. Ve 1000 byte'dan büyük kaynak kodu hile yapar. Bunların nasıl olduğundan emin değilim.


7
Belki de bu, bu sitedeki en uzun HQ9 + cevabı. (?)
TSH

1
"tanımsız bir C davranışı programı sonlandırmak için gerekli" tanımsız bir davranış tanımsız : herhangi bir şey yapabilir.
Solomon Ucko

C18 standardının 4. sayfasına göre : "Muhtemel tanımsız davranış, durumu tamamen tahmin edilemeyen sonuçlarla görmezden gelmekten, çeviri ya da program yürütülürken, ortamın dokümante edilmiş bir şekilde (teşhis mesajının yayınlanmasıyla veya olmadan) belgelenmiş şekilde davranmaya kadar uzanır. ), bir çeviri veya yürütmeyi sonlandırmak için (bir teşhis mesajının verilmesiyle). "
Solomon Ucko

@SolomonUcko Fakat bu sitedeki derleyici / tercüman tarafından bir dil tanımlarız. Ve en az bir derleyici / tercüman doğru sonucu üretebildiği sürece cevap gayet iyi.
tsh

9

05AB1E , 4 bayt

"A"§

Çıktılar ayırıcı olmadan birleştirildi.

Çevrimiçi deneyin ya da çevreleyen alıntılarla çevrimiçi deneyin .

Açıklama:

        # Program without surrounding quotes will output string "A"
"A"     # Push "A" to the stack
   §    # Cast it to a string
        # (output the top of the stack implicitly as result)

        # Program with surrounding quotes will output string "§"
""      # Push an empty string to the stack
  A     # Push the alphabet to the stack: "abcdefghijklmnopqrstuvwxyz"
   "§"  # Push "§" to the stack
        # (output the top of the stack implicitly as result)

Maalesef, bu kural 2'yi ihlal ediyor. Kodunuzda bazı boş alıntılar olması iyi olsa da, hem çevrelenmiş hem de çevrilmemiş formlarda boş olmayan en az bir tane olmalıdır.
Geza Kerecsenyi

@GezaKerecsenyi Oops, " hem alıntı hem de alıntı olmayan biçimlerde " bölümünü okuyun . Şimdi düzeltilmeli.
Kevin Cruijssen


5

C # (Visual C # Etkileşimli Derleyici) , 113 112 107 70 64 bayt

Write(".f();static void f(this string s){Write(s+')'+';');}//");

Negatif yedi sayesinde 5 bayt kaydedildi

Alıntı Yapılmayan ve Alıntılanan

Bir süre sonra, çözümümün çok karmaşık olduğunu anladım. Burada gösterilen en yeni program, tırnak içine alındığında hataları önlemek için yorumdaki programın geri kalanını gizler.

Tırnaklara sarıldığında, Write(birlikte yazdırılan bir uzatma yöntemine geçirilir );.


Split()-> Trim(), ve var a->_
negatif yedi

1
@negativeseven Teşekkürler, bir atma kullanmayı asla düşünmezdim!
Ignorance'ın

1
@negativeseven Aslında, çözümümün o kadar karmaşık olması gerekmedi, en yeni düzenlememe bak
Emboiment of Ignorance

Bir uzatma yöntemi kullanarak 64 bayt . Oldukça şaşırdım, bu çok iyi sonuç verdi!
Negatif yedi,

1
@negativeseven Teşekkürler! Ve bana zorlukların ikinci kısmı için bir fikir verdiniz: Dışını bir değişkende ele geçiriyordum ve sonra Removeve Insertonu kullanıyorum , şimdi sadece bir uzatma yöntemi kullanabilirim!
Cehalet


4

Foo , 4 bayt

"P"s

Çevrimiçi deneyin! Ayrıca Japt'te çalışır.

5 bayt (UTF-8)

"A"§

Çevrimiçi deneyin! Ayrıca 05AB1E'de çalışır.

9 bayt

"!""$;"$;

Çevrimiçi deneyin! Ayrıca Runic Enchantments'da çalışır.

11 bayt

say ".say~"

Çevrimiçi deneyin! Ayrıca Perl 6'da çalışır.

20 bayt

print";print'print'"

Çevrimiçi deneyin! Ayrıca Python 2'de de çalışır.

69 bayt

body::after{content:"{}body::after{content:'body::after{content:}'}"}

Çevrimiçi deneyin! Ayrıca CSS'de çalışır.

Hmm ... Foo oldukça uyumlu bir dil.


Hmm… Foo oldukça uyarlanabilir bir dil. ” Foo'yu bilmeyenler için: çift tırnak içindeki her şey çıktı ve başka hiçbir şey (birkaç diğer yerleşik karakter hariç) işlem dışı. " İş için mükemmel dil " burada bir ifadedir. ;)
Kevin Cruijssen

2
Yani, temelde, sadece bu meydan okuma için diğer tüm çözümleri parçalamak ?!
Shaggy,

@Shaggy Dil Foo. En az bir çift alıntı ile hemen hemen her şey ve her ikisi de bu zorlukla Foo'da boş olmayan işler üretmeyi umuyor. Yani "a"b 1"2"Foo'da da çalışır. Şu ana kadar bir Foo polyglot olmayan bu zorluktaki tek cevap, HQ9 + 'dadır, çünkü Foo yorumcusu da taşma sorununa sahiptir.
jimmy23013

4

> <> , 18 9 bayt

"|o<"r>o|

-Jo King sayesinde 9 bayt

Çevrimiçi deneyin! ( alıntı )

açıklama

"|o<"r>o|
"|o<"     Pushes the quoted characters onto the stack
     r    Reverses the stack
      >o| Outputs all characters on stack & errors
""|o<"r>o|"
""          No-op
  |         Reverses the IP direction
     "r>o|" Pushes the quoted characters onto the stack (backwards)
  |o<       Outputs all characters on stack & errors

5
Code Golf'a Hoşgeldiniz!
Stephen,

@Stephen Teşekkürler!
tjjfvi


2

Runik Büyüleri , 9 bayt

"!""$;"$;

Çevrimiçi deneyin! ve""!""$;"$;"

Kevin Cruijssen'den, ikinci denememde yaptığım ilk denememi temelde yapan kişi.

"Fungoidler hiçbir zaman benzersiz tekliflere sahip değil" kural koyma "yla aşağıya inmek, kendi yorumumda bahsettiğim yolla, bununla ilgili hiçbir şey yolunda gitmemesi gereken bir yol var.

7 bayt

0".""$;

Çevrimiçi deneyin! ve"0".""$;"

Normal şartlar altında, bu program 0".""$;0".""$;bir tamsayı itmek olarak çalıştırılır 0, daha sonra dizge ., birleştirme $;0, NOP boş bir dizge bitiştirir, yığının en üstünü (dizge .$;0) yazdırır ve sonlandırır. Tırnak işaretleri içine almak, "0".""$;"dizeyi iter.0 boş bir dize, NOPs birleştirir, üst-yığını baskılar ve son bulur (daha önce un baskılı tam sayı oluşturma 0dizisi formunda). Sonuncusu "beklenmedik şekilde bırakıldı (ve yine de orijinal programın bir parçası değil ).

Fungoidlerin string değişmezleri yoktur, "kendi dizgisini kendi kaynağı oku" modunu değiştiren bir komut vardır ve bazı "komut göstergeleri kaynak sınırına ulaştı" kuralı (genellikle kenar sarımı), yani aynı kaynak kodu -positional-byte, hem "begin string" hem de "end string" komutu olarak işlev görür; " kendisi ).


Süper hızlı cevap! Sadece gönderiminiz hakkında bir şeyler yanlış mı anladım acaba, ama benim $;için alıntılanan versiyonun sonunda yazmıyor.
Geza Kerecsenyi

Tekrar okuduğumda ve runiklerin bu kısmı yapıp yapamayacağını bulmaya çalışıyorum . Şimdi "eşleştirilmemiş" teklifleri araştırmaya başlamak; örneğin "$;ve ""$;"(Runik sarma tırnaklar kendileri ile eşleşiyor).
Draco18,

@GezaKerecsenyi Güncellenmiş programımın herhangi bir kuralları ihlal edip etmediğini bana bildirin.
Draco18,

Umm .. Bu nasıl geçerlidir? Tırnaklarınız olmadan programınız çıktı !.(hangisi doğru), ancak tırnaklarınız olmadan programınız çıktı 0$;mı? Not: Runic Enchantments'ı hiç tanımıyorum, ancak geçerli düzeninize dayanarak geçerli olduğunu düşündüğüm olası bir düzeltme 0"!""$;"$;(hangisi olduğu gibi çıktılar!$; veya tırnaklarla çevrili ise çıktılar0$; ) olur. DÜZENLEME: Aslında buraya bırakın düşünmek 0ve çıktı !$;ve $;.
Kevin Cruijssen

1
@KevinCruijssen $"yığının üstü yazdır" dır ve ;sonlandırır. Fakat esasen geçerli bir cevabınız var.
Draco18,






0

R, 16 bayt

 ";print(";");" 

Yukarıdaki kodun ek tırnak içine alınmadığını ve hem satır hem de sondaki boşluklara sahip olduğunu unutmayın.

Deneyin (sarılı olmayan sürüm)


Bağlantılı programın paketlenmemiş sürüm olduğunu not etmek isteyebilirsiniz.
Jonathan Frech

Ayrıca önde gelen ve sondaki boşluklar hakkında bir not eklerdim. Aksi takdirde onları fark etmek zor.
mbomb007

Düzenlendi, önerileriniz için teşekkürler!
James Otto

0

AppleScript, 9 bayt

return"&"

Açıklaması:

return"&"    -- returns "&"

Alıntı:

"return"&""  -- implied return of the string "return" concatenated with ""
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.