Kaynak kodu selfie


20

Amaç:

Bir guru bir zamanlar mükemmel bir kod selfie'nin en iyi sol üst köşeden çapraz olarak çekildiğini söyledi. Kod selfie neredeyse bir Quine gibidir - ancak saat yönünde 45 derece döndürülür. Senin görevin bir kod selfie çıktı bir program kodlamaktır.

Kurallar:

  1. Herhangi bir programlama dilini kullanabilirsiniz.
  2. Programlarınız dosya, dosya adı, ağ veya başka herhangi bir şeyden girdi almamalıdır.

Zorunlu kriterler:

Selfie'ler motivasyon ve arka planla ilgilidir, bu nedenle boşluklar (ve satır beslemeleri ve benzeri gibi görünür olmayan diğer içerikler) karakter sayımının bir parçası olarak sayılmaz. Görünür olmayan tüm karakterlerin doğru 45 derece döndürülmüş konumda çıkması kısıtlanırken, görünmeyen tüm karakterler doğru 45 derece döndürülmüş konumla sınırlı değildir. Tıpkı normal selfie'deki bir renk paleti gibi, kod selfie için de zorunlu olan, şu karakterlerden en az 16'sını içermesidir: {a-zA-Z0-9}

Örnek:

Bu örnek geçerli bir kaynak koduysa:

Output abcd
Output efgh
Output ijkl
Output mnop

Örnek kod şu çıktıyı vermelidir:

   O         
  O u
 O u t
O u t p
 u t p u
  t p u t
   p u t
    u t   a  
     t   e b
        i f c
       m j g d
        n k h
         o l
          p

Bu kod golf, bayt kazanır en kısa kaynak kodu kazanır!


2
16 eşsiz [a-zA-Z0-9]?
Doktor,

Whitespace'de bir sunumu nasıl değerlendiririz?
Sp3000

Boşluk mümkün değildir, çünkü boşluklar sayılmaz. Evet, benzersiz [a-zA-Z0-9] 'dan 16, toplamda en az 16 karakter değil.
Plarsen

Bu zorluk, kodlarında satır aralığı gerektiren dillere karşı önyargılıdır. Bu meydan okuma için çoklu çizgiyi desteklemek çok daha zor.
nderscore

1
@nderscore Belki de bu konuda haklısınız. Hepimiz eğlenmek için buradayız, değil mi? Durumdan en iyisini yapın! ;)
Plarsen

Yanıtlar:


7

Javascript ( ES6 ), 72 bayt

16 benzersiz alfasayısal karakter paleti: fjalert0plcgmixn

(f=j=>alert(`(f=${f})(0)`.replace(/./gmi,x=>' '.repeat(j++)+x+'\n')))(0)

mve iminimum palet gereksinimlerini karşılamak için normal ifadeye bayraklar eklenir.


4

CJam, 30 28 25 bayt

{95c103ic]seeSf.*N*Xmr}_g

Bu A-Za-z0-9sınırdan 16 karakter nedeniyle biraz uzun .

Bu, CJam'daki standart bir kinin biraz önemsiz bir çeşididir. Yakında açıklamalar ekleyeceğiz.

GÜNCELLEME - Martin sayesinde 2 bayt, Dennis sayesinde 3 bayt tasarruf

Buradan çevrimiçi deneyin


1

Java, 312

class Z{public static void main(String[]a){String s="class Z{public static void main(String[]a){String s=%c%s%1$c,t;for(int i=0,j;i<326;System.out.println(t+s.format(s,34,s).charAt(i++)))for(j=i,t=%1$c%1$c;j-->0;)t+=' ';}}",t;for(int i=0,j;i<326;System.out.println(t+s.format(s,34,s).charAt(i++)))for(j=i,t="";j-->0;)t+=' ';}}

Aslında 326 bayt var, ancak kuralları doğru anlarsam, 14 boşluğu saymam gerekmiyor.

Program temelde standart bir Java quine artı bir sürü boşluktur.


1

Python 3, 139 karakter - 10 boşluk = 129 karakter

sjxd='sjxd=%r;[print(" "*i+(sjxd%%sjxd)[i]) for i in range(len(sjxd%%sjxd))]';[print(" "*i+(sjxd%sjxd)[i]) for i in range(len(sjxd%sjxd))]

Kodum bir satır olduğundan, tek yapmam gereken programı çapraz olarak yazdırmaktı. Dizemde garip 'sjxd' adı var, böylece kodum 16 benzersiz alfasayısal karaktere sahip olabilir.


0

CSS, 69 bayt

<style>:before,*{transform:rotate(45deg;display:block;content:'<style>

Diğer etiketlerle çakışmayı önlemek için boş bir html sayfası yerleştirin.

Palet: stylebfortanm45dgiplck(22 karakter)


0

MATLAB, 40 bayt

Tüm özyineleme şeyi ile biraz zor - yazdırılacak bir dizeye kodu eklerken kendi kaynak kodunuzu nasıl yazdırabilirsiniz, kaynak kodun boyutunu artırır. Ancak, asla daha az, aşağıdakiler yapmaz:

123456;disp(diag('123456;disp(diag())'))

123456;Bit gerekli 16 benzersiz karakterleri karşılamak için vardır. Aşağıdakiler kullanılır:

'()123456;adgips

Yukarıdaki kod bazı nedenlerden ötürü Octave üzerinde çalışmaz, ancak MATLAB'de çalışır. Aşağıda çıktı:

1                  
 2                 
  3                
   4               
    5              
     6             
      ;            
       d           
        i          
         s         
          p        
           (       
            d      
             i     
              a    
               g   
                (  
                 ) 
                  )

Şimdi ans=MATLAB'ın koymaktan hoşlanmadığı bir şey yoksa , aşağıdakiler 32 bayt için işe yarar :

12345678;diag('12345678;diag()')
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.