Selam Dünya! yarı ortak karakterlerle


28

Bazılarınızın bildiği gibi, Dennis’in harika Çevrimiçi Deneyin! , Merhaba, Dünya! program gereklidir. Son zamanlarda, Dennis, bu programları web sitesinden yüklemek için bir yol açtı. İşte bu programlarda kullanılan karakterlerin JSON pastebinleri 27 Temmuz 2017'den itibaren sıklıkta.

Bu karakterlerden bazılarının biraz sevgiye ihtiyacı var, bu yüzden meydan okumanız Merhaba, Dünya! (tercihen bu sürece dahil olan bir dilde), yalnızca aşağıda belirtilen karakterleri kullanarak. Bu karakterler, en sık kullanılan iki karakterle birlikte 10ve 99(dahil) zamanları arasında kullanılan karakterlerin tümü 0ve çünkü kendimi iyi hissediyorum.

0 $&*?ABCDEFGIJKLNPQRSTUXYZ\`gjkqwxyz{}÷≤≥=║_

Karakteri kullanımınız, kod noktası veya bayt değerine bağlı olmayan normal bir programdaki görünümüne dayanmalıdır.

Bu kümeden en az bir karakter kullanmanız gerekir, bu nedenle 0 uzunluklu programlar geçersizdir.

Bu , bayt cinsinden en kısa cevap kazanır.

Cevabınızın geçerli olup olmadığını kontrol etmek için JSFiddle


sonraki satırda boşluk bırakabilir miyim?
dzaima

@ dzaima Boşluk olmadan çıkartamazsanız, yapın. Uzaydan kurtulmak için daha fazla bayt kullanılıyorsa, alandan kurtulun
Stephen

Yazdırılmayan karakterlerin çıktı alma yolunda (STDOUT) bir topluluk fikir birliği (veya burada belirli bir ödenek / ödenek) var mı? Daha önce ortaya çıktığından emin değilim (ve kolayca göz ardı edilebilirdi) ancak stratejimi burada çarpıcı biçimde değiştirdi ...
brhfl

@ brhfl bilmediğim bir şey değil - tek kural, takip eden yeni hatlara genellikle izin veriliyor, sohbete sorabilirsiniz
Stephen

Yanıtlar:


6

SOGL V0.12 , 89 75 68 bayt

z{}xxxx≥x≥x≥xXUqXxq≤qq≤q *R_IIRq  q *R_I0II*IRqxXq≤qxqxq CR_0II÷Rq0*

Burada dene!
Not: Ne zaman qveya çıktı buraya atıfta bulunuluyorsa, o, (herhangi birinin oOpP) kullanılamaz durumda olduğu veya hazır bir yeni satır çıkarır.

Açıklama (modası geçmiş, değiştirilmiş olan "H" harflerinin harfleri kullanılarak basılmasıdır):

 $             push "$"
  R_           convert to an array of ordinals, then push all the contents to the stack
    0II        push 0+1+1 = 2
       *       multiply by that
        R      convert to character
         q     output
          z    push the lowercase alphabet
           {}  iterate over it, pushing each char, and do nothing. Stack: ["H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
stack manipulation:
 xxxx ["H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r"]
 ≥    ["r","H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q"]
 x    ["r","H","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o"]
 ≥    ["o","r","H","a","b","c","d","e","f","g","h","i","j","k","l","m","n"]
 x    ["o","r","H","a","b","c","d","e","f","g","h","i","j","k","l"]
 ≥    ["l","o","r","H","a","b","c","d","e","f","g","h","i","j","k"]
 xxx  ["l","o","r","H","a","b","c","d","e"]
 q    output the "e"
 ≤    ["o","r","H","a","b","c","d","e","l"]
 qq   output the "l" twice
 ≤    ["r","H","a","b","c","d","e","l","o"]
 q    output the "o"

*                       push "*",
 R_                     convert to an array of ordinals, then push all to stack
   II                   increase by 2
     R                  convert back to character
      q                 output
         q              push a space, then output
           *            push "*"
            R_          convert to an array of ordinals, then push all to stack
              I         increase that
               0II      push 0+1+1 = 2
                  *     multiply
                   I    increase
                    Rq  output as character
stack manipulation: (starting stack: ["r","H","a","b","c","d","e","l","o",","," ","W"])
 x  ["r","H","a","b","c","d","e","l","o",","]
 X  ["r","H","a","b","c","d","e","l","o"]
 q  output the "o"
 ≤  ["H","a","b","c","d","e","l","o","r"]
 q  output the "r"
 x  ["H","a","b","c","d","e","l"]
 q  output the "l"
 x  ["H","a","b","c","d"]
 q  output the "d"

C            push "C"
 R_          convert to ordinal as before
   0II÷      floor divide by 2
       Rq    output as character
         0*  multiply by 0 so nothing extra would be outputted

Eğlenceli gerçek: izin verilen karakterlerden tüm karakterler SOGL kod sayfasındadır: D


Yani ... Profesyonel bir geliştirici olarak iyi bir istikrarlı işin var değil mi? Çünkü dang, bu harika bir dil ... Ayrıca hoş JS tercümanı, dün gece bitirdin :)? Bazı diller için belge göndermeye başlayabilir misiniz? Ya da özel sohbet mesajı bana bu tür belgelerin yerini? SOGL onu öldürür.
Magic Octopus Urn

@MagicOctopusUrn 1) hayır lol ben 15 2) Ben şahsen bunu yaptım en bodgy şey olduğu gibi sevmiyorum 3) JS tercüman bir süredir orada 4) son dokümanlar üzerinde SOGL (onları da arayabilirsiniz) vardır burada (gibi bazı şeyler teknesi, palenChars.txt) daha güncellenir burada
dzaima

Bayt azaltma tebrikler tekrar saymak! Açıkçası benimkinden daha düşük bir şey alabileceğimi sanmıyorum !!
Dom Hastings

23

Perl 5 , 76 bayt

}{${$_=$`x?B?}{?\w$?}{$_=qq{Lg\LLL$&= w$&RLD=}&qq=y}\LLL$&L _$&RLDA=}=$_=\*G

Bu, kullanımdan kaldırılmış bir özellik kullanıyor ancak terminalimde yerel olarak çalışıyor (belirtildiği gibi sürüm 5.18.2). Eski sürümlerinde Perl ?\w?eş anlamlı bir kelimedir /\w/, regexp eşleşmesine erişmemi sağlar ve $&(son eşleşme) ve $`(son eşleşmeden önceki metin ) için yeterli karaktere sahibim . Bunları alabilmek için bunlara ihtiyacım var O. Bunu bir globreferans oluşturarak yaratıyorum ( $_=\*Gbir skalaya atladım, böyle bir şeyGLOB(0x7ffb728028d0) ). Bu bir kez dahil olunca $_, ?B?maç olacak Bve $`içerecektir GLOkarşı, o zaman eşleşebilir \w$hangi kaydetmişizdir Oiçinde$&Ben dize çalıştırıyorum dizeleri eklenir-VE metnin geri kalanını oluşturmak için, dize gövdesi kullanılarak küçük harfli \L.

Çevrimiçi deneyin! - kullanım /\w/yerine ?\w?TIO üzerinde Perl sürümü çok yeni olduğu için.


Perl 5 , 65 bayt

Bu biraz daha hileli çünkü TIO dosya ismine dayanıyor .code.tio, yani bunun gerçekten rekabet ettiğini sanmıyorum ama sonuçtan memnun oldum!

}{${$_=$0}{?\w$?}{$_=qq{Lg\LLL$&= w$&RLD=}&qq=y}\LLL$&L _$&RLDA=}

Çevrimiçi deneyin!


Bayrakların içeriği hakkında hiçbir şey söylemedim -p, sorun değil. İyi iş, bunu sorduğumda umduğum şey buydu :)
Stephen

1
nasıl ... ne ... the ...
Okx

@StepHen Zorunlu olduğum için mutluyum! Dürüstçe gerçekten zevk aldım. Ben de bayrağını cezalandırmadığına sevindim, gönderimi güncelleyeceğim. Teşekkürler!
Dom Hastings

@Okx Bu etkiyi yarattığı için mutluyum!
Dom Hastings

15 byte <3 eklemek zorunda olmadığından emin misin?
Magic Octopus Urn,

10

Unary , 7 * 10 182 bayt

Unary, Brainfuck'un 0sayacı kullanarak unary'e dönüştürülmüş ikiliye dönüştürülmesidir . Temel olarak, bir Brainfuck programını bir sayıya sıkıştırır ve çıktı bu 0s sayısıdır . Genellikle çok büyük programlardır.

Programı buraya yapıştırmayacağım çünkü SE'nin ne kadar metin izin verdiğini bilmiyorum ama bahse girerim bundan daha az. Bunun yerine, tam olarak sıfır sayıyı bu cevaba yapıştıracağım:

708184005756841022918598670049178934705323143517361395031673227349803938380119378597780037353721967636097362645175347036417214959141923667629285233360306016978751166690464736541968556

Bu oldukça ucuz bir cevap olduğundan, en kısa olamayacağına eminim, ve basitçe kopyaladım , bunu bir wiki yazısı yapıyorum.


2
En azından 65536 waaaaaay büyüktür değil 7 * 10¹⁸² hangi bulunuyor "Ben SE verir ne kadar metin bilmiyorum"
Outgolfer Erik

9

05AB1E , 137 106 95 bayt

X00X00DXX00DXX00XX0X0X00D0XXXX0X00X00XXX00XXX0XXXXXX00XXXXX0XXXX00D0X000DD00XXJC000gDD0000g***B

Çevrimiçi deneyin!

-31 @Adnan sayesinde 10 numaralı üssü kullanabilirim.

- ?? Bazı şeyleri yanlış gösterdiği için @Riley'e teşekkürler.


Eski versiyon (farklı yöntem):

05AB1E , 211 186 166 bayt

0g00g000000000gUX000000gXX00000g000g00g000gD0000g0 000g00000gX00000gX00000g0 00000g00000000g0000000g00g00000000gD000000gX0000000g0g00000gUXJX00000000000000000g000g**B

Çevrimiçi deneyin!


Haha! VE BURADA HİÇBİR ŞİDDET OLMAYAN ŞANS YOLUYLA DÜŞÜNDüm!


Öncelikle X'te 255 saklanır.

00g               # Push 2 (length of 00).
   00000g         # Push 5 (length of 00000).
         00000g   # Push 5.
               JU # Join to 255 and store in X.

Sonra, aynı uzunluktaki hileyi kullanarak: 1296995323340359595058728869715

0g00g000000000g000000g000000000g000000000g00000g000g00g000g000g0000g0 000g00000g000000000g00000g000000000g00000g0 00000g00000000g0000000g00g00000000g00000000g000000g000000000g0000000g0g00000gJ

0<space>Sıfırlar için uzunluk numarası yerine sadece kullandığımız yer .

Sonunda, depoladığımız 255'i iterek 255'ten 10 tabanına dönüştürüyoruz :

X  # Push stored 255.
 B # Convert to base 255.

Diğer izin verilen karakterleri kullanarak hala golf ve çoğaltma, bir dakika olacak.


8

Beatnik , 148 bayt

K QQQQQQQG ZD XA K QQJA KD ZD XA K KG KD ZD ZD ZD XA XA K B KD ZD XA K QQQQF ZD ZD XA K QQQD XA K A Z KD XA ZD XA K B KD XA ZD XA K J Z XA K QQQB XA

Çevrimiçi deneyin!

açıklama

Beatnik, sözcüğün scrabble puanına dayanarak yürütülen talimatlara dayanmaktadır. İşte kısaltılmış bir açıklama:

Code         Scrabble Score   Explanation

K            5                push the scrabble score of the next word
QQQQQQQG     72               72 ['H']
ZD           12               pop a value; push it back twice
XA           9                pop a value; print its ASCII character
KD           7                pop two values; push their sum
Z            10               pop two values; push their difference

8

Moorhens (v2.0), 3423 983 923 866 749 716 bayt

Bu biraz golf oynayabileceğini düşünüyorum, Moorhens çalışmak için kolay bir dil değil.

xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU KA xU xU xU xU xU xU xU xU xU xU xU xU KA AA xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU KA xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU KA xU xU xU xU xU xU xU KA KA xU xU xU AA AA AA AA AA KA xU AA KA xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU KA xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU xU KA xU xU xU KA XI XI XI XI XI XI KA XI XI XI XI XI XI XI XI AA AA AA AA AA AA AA AA AA AA AA AA

açıklama

Moorhens, sözlükten oluşan bir dildir. Her sözcük, karma değerine dayanan bir işleme karşılık gelir. Burada kullanılan beş operasyonlardır xU, ER, XI, KA, veAA

  • xU TOS'u artırır
  • ER yığına yeni bir sıfır koyar.
  • XI TOS'u düşürdü
  • KA TOS'u çoğaltır
  • AA TOS'u aşağıya doğru yuvarlıyor

Her bir harfi bu işlemlerin başarılı uygulamaları ile iteriz.


5
'İki operasyon' - Ben arananlar konusunda iyi bilgili değilim ama kesinlikle bunlar beş operasyondur?
boboquack

@boboquack sabit
Buğday Sihirbazı

1
dil bağlantısı?
Sızdıran Rahibe,


5

Glypho , 480 bayt

AABCABABABBAABABAABCABBAABABABBCABBAABABABABABABABBAABBAABABABABABABABBAABBAAABCABBAABABAABCAABCABBAABABABBCABABABBAABBAABABAABCAABCABBAAABCABBAABABABBAABBAABABAABCABCAABABABABABBAABBAABBAABABAABCABAAABABAABAABBAABCAABABABBAABBAAABCAABCABBAABABABBCABABABBCABABABBAABAAABABAABAABABABBAABABABBAABABABAAABABAABAABBAABABABBAAABCABBAABABAABCABCAABABABABABBAABBAABBAABABAABCABCAABAAABABAABAABBAABABABBCAABCABBAAABCAABCABBAAABCABBAABABABBAABABABBCABABABBAABAAABABABCAABBAAABAABACABBBABCB

Çevrimiçi deneyin!


4

Headsecks , 78 bayt

yyzyzzxNxNzx{yyy{y{y{yzzz_{_zzyy\zxxxxxx\zzy\\zz\zx\{{\{{\zzz\xxx\{{\{{y\zzzx\

4

Çift JavaScript, 318 bayt

Buna izin verilip verilmediğinden emin değilim, bir kez JavaScript tercümanı kullanarak yapamadım. Kullanmaya benzer eval()ancak bunun yerine tercümanı iki kez kullanıyorum: (Sonuçların geri yazdırılmasını sağlamak için konsolda deneyin)

`\`\\x${0xA*0xA&0xC}${0xA&0xC}\\x${0xA*0xF&0xF}${0xB*0xF&0xF}\\x${0xA*0xF&0xF}C\\x${0xA*0xF&0xF}C\\x${0xA*0xF&0xF}F\\x${0xE*0xF&0xF}C\\x${0xE*0xF&0xF}${0}\\x${0xB*0xF&0xF}${0xB*0xB*0xF&0xF}\\x${0xA*0xF&0xF}F\\x${0xB*0xB*0xF&0xF}${0xE*0xF&0xF}\\x${0xA*0xF&0xF}C\\x${0xA*0xF&0xF}${0xA*0xA&0xC}\\x${0xE*0xF&0xF}${0**0}\``

Çevrimiçi deneyin!

Değerlendirir:

`\x48\x65\x6C\x6C\x6F\x2C\x20\x57\x6F\x72\x6C\x64\x21`

Çevrimiçi deneyin!

Hangi için değerlendirir Hello, World!


3

Smallf ** k , 266 bayt:

zJ$NJ`ZZx*gQYQQ{zqyKKUkUR?AS`zB`JB&UCKCIxQ_G0*000FzzJ&?YwkC\qqgZ`xYQyC}DgY_&_S}KPZ\&?SGAE&{Gw_w} GAgA{qT{gC&`qI?xwCNQwgR}?{*QEwQUj&BT&jR__IJJIqUqAPF0yICXESL?AYR QIAFU& yYwE&$\Njj B0T*F j$?kCzQk*}U}UgI$}Ew_yDL`qYI*E_G}SCjXDFNJKGNIGyIwA\BzLP`*zCILGCNqyYZyq? GwN{q{gKSj

Aslında, karakterlerin bir önemi yoktur. Bu, her karakterin bir kod noktasını veya tek bir kod noktasını oluşturup oluşturmamasından ibarettir. Bu yüzden, mevcut her karakteri (çok baytlı karakterler hariç) kullanmak için çaba sarf ettim (rastgele seçildiğinden beri, bunu garanti etmek için bir çaba göstermedim).


1
@totallyhuman Haklısın; Bunu değiştireceğim. Ben sadece çok baytlı karakterleri kaldıracağım. Gerçekten bir kod sayfası yok; sadece 1s ve 0s ( ordord
tekler

Karakteri kullanımınız, kod noktası veya bayt değerine bağlı olmayan normal bir programdaki görünümüne dayanmalıdır.
KSmarts

@KSmarts OP hakkında bunu soracağım.
HyperNeutrino

@KSmarts Bunun anlamı, bir dilin farklı bir kod sayfası varsa ve örneğin '5'normal kod noktasını kapsıyorsa 'A', kullanmanıza izin verilmez '5'.
HyperNeutrino 14

@KSmarts, standart olmayan bir kod sayfanız varsa, bu karakterlerin bu kod sayfasında hareket edeceği anlamına gelir. Kod noktalarını hala programınızın bir parçası olarak kullanabilirsiniz.
Stephen

3

Pyke , 133 144 bayt

? BXKKKKRKRKRK\CkJ00q}}}XEjTX}G_E\E\L\LkJjRT}}XRGREkJjR 00q}R? B_RE\ \wkJjRT}}XRGRE\R\L\DkJjRZ0q}}R? B_RER? JR? KREZjZ0q}AREkJjRT}}RG_RE00q}}RAA

Çevrimiçi deneyin!

Neredeyse kısaltılabilen korkunç bir kod karışıklığı ... Her seferinde bir karakter oluşturur.

? BXKKKKRKRKRK\CkJ - ".C" - A string that when evaled, gets the character at the point
00q}}}XEj - Construct 64 by doing `((0==0)*2*2*2)**2` and then eval, getting the "@" character and store it in `j`
TX}G_E - Get "h" using `@` by looking it up in the alphabet
\E\L\LkJ - "hELL"
jRT}}XRGREkJ - "hELLo"
jR 00q}R? B_RE  - ","
\ \wkJ - "hELLo, w"
jRT}}XRGRE\R\L\DkJ - "hELLo, woRLD"
jRZ0q}}R? B_RER? JR? KREZjZ0q}AREkJ - "hELLo, woRLD!"
jRT}}RG_RE00q}}RAA - "Hello, World!"

2

dc , 164 162 bayt

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzS zzS?zzzzzzzzzzzzS$zzzzzzzzzzzzzzzzzzzzzzzzzzzzzPzzzzzzzzzzzzzzzzSwzzzzzzzzzzzzzzzPzzzzzzzzSLzPzPzzzzPL$PL PLwPzPzzzzPLLPAI*PL?P

Çevrimiçi deneyin!

Muhtemelen daha iyi / daha ilginç bir yaklaşım var. Sahip olan ASCII + 256 numarasını kullanmaya çalıştım dc, ancak bu ek karakterler de çıkardı (basmasalar bile) ve 'o' tuşuna basarsam, harika bir şekilde baş döndürücü 111 temiz bir şekilde çarpan 111+ (256 katları) değeri. İşte size oldukça basit bir çözüm (mümkün olduğunda golf oynayarak da olsa) çözümü:

In dc, zyığın derinliğini yığının üzerine iten bir komuttur. Bu, onu bir artış olarak kullanabileceğimiz anlamına gelir. İşte bu meydan okuma için ASCII değerlerin çoğunu böyle yarattım (ile basıldı P), adlandırılmış yığınlara bastığım Sve ana yığına geri döndüm L.

dcGiriş yarıçapı ondalık olduğunda bile (onaltılık AF) hex değerlerini kullanmanıza izin verir. Neyse ki, ilk mektubumuz 72, 12'nin katı, bu yüzden 6 * 12 ile çarparak ve hemen yazdırarak burada bir veya iki bayt biriktiriyorum ( zzzzzzzC*P). 164 baytlık sürümümde, daha zekice fakat daha erken bir denemeden bir kazanç ve bayt israfı olan 72 ('H') elde etmek için çarpma işleminden önce kullandım. Şimdi, alanı, ünlem işaretini ve sıra dışı olan ve bu nedenle henüz yazdırılamayan virgülleri artırarak ve biriktirerek başlıyorum. Sonra, hemen yazdırdığım 'H' ye geliyorum, 'W' ye girmeden önce, sonradan biriktirmem gerekiyor.

Sadece 'e' ye bastığımda baskı yapıyorum, sonra 'l' ye kadar artırıyorum. Bunlardan ikisini basar ve birini kurtarırım. Ben yaparken o 'o', ben ilk ben sonrası için onlardan biri kurtarmak zorunda düşünmüştüm, ama her şey tür bu noktada sırayla. Bir 'o' basarım, virgül, boşluk ve 'W' harflerini daha öncekilerden alırım ve şimdi tekrar 'o' olurum. Bunu basar ve daha önce sakladığım 'l' yi yüklemeden ve yazdırmadan önce yazdırdığım 'r' (114) değerine kadar çıkacak en yüksek değere kadar arttırırım.

Neredeyse bitti! 'd', 10 * 10 çarpılarak kolayca elde edilebilen ASCII değeri 100'dür (daha önce depolamaktan ve şimdi yüklemekten daha az bayt). Onaltılık değer A, komutla alabileceğimiz giriş yarıçapımız olduğu gibi 10'dur I. Bunları çarpın, yazdırın ve ünlem işaretimizi öncekinden yükleyin ve yazdırın. Selam Dünya!

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.