Satır, Sütun, Köşegen, Blok


13

Bazı pozitif tamsayı N için N karakter genişliğinde ve N karakter uzunluğunda kare bir kod bloğu yazın.

Örneğin, N değeriniz 5 olabilir ve blok şöyle görünür:

ThisI
sMy5B
y5Cod
eBloc
kOkay

Bu bloğun aşağıdaki gibi davranması gerekir:

  1. Üst satır çıkarıldığında ve bir program olarak çalıştırıldığında, tam metnin rowstdout'a yazdırılması gerekir.

    Örneğin, ThisIyazdırır row.

  2. Sol sütun çıkarıldığında ve bir program olarak çalıştırıldığında, tam metnin colstdout'a yazdırılması gerekir.

    Örneğin, Tsyekyazdırır col.

  3. Sol üst köşeden sağ alt köşelere doğru ana köşegen çıkarılıp bir program olarak çalıştırıldığında, tam metnin diastdout'a yazdırılması gerekir.

    Örneğin, TMCoyyazdırır dia.

  4. Tüm satır, yeni satırlar da dahil olmak üzere bir program olarak çalıştırıldığında (isteğe bağlı bir satırsonu satırıyla), tam metnin blkstdout'a yazdırılması gerekir.

    Örneğin,

    ThisI
    sMy5B
    y5Cod
    eBloc
    kOkay
    

    yazdırır blk.

ayrıntılar

  • Dört programın hepsi aynı programlama dilinde çalıştırılır.
  • Orijinal bloktaki N 2 karakterleri satır sonlandırıcılardan başka bir şey olabilir .
  • Dilinizde stdout yoksa, başka bir ortak çıkış yöntemi kullanabilirsiniz. Dört programda da aynı yöntem olmalıdır.

Orijinal bloğu en az farklı karakter içeren (satırsonu saymaz) gönderim kazanır. Tiebreaker daha küçük N ile sunulmaya gider.


Bazı iki sembollü ezoterik dilde kesinlikle bir çözüm olduğu göz önüne alındığında, bunun en küçük
N.'ye

@xnor Muhtemelen. Her ne kadar 1 farklı Lenguage cevabı olasılık alanının dışında değildir. Yine de, bu puanlama yöntemi ilk olarak en küçük N galibiyetinden daha ilginçtir.
Calvin'in Hobileri

Satır ve sütun programlarının aynı uzunlukta olduğu düşünüldüğünde Lenguage nasıl çalışır?
xnor

@xnor Ah, haklısın. İşe yaramazdı.
Calvin'in Hobileri

Blok olmayan programlar da sondaki yeni satırla bitebilir mi?
jimmy23013

Yanıtlar:


6

> <> (Balık) , 3 benzersiz karakter (N = 2000)

Kod kullanımları 1ve -yığın ve isteğe bağlı sayılar koymak piçin (öz), yığın üzerinde en iyi 3 numaralarına göre kodunu değiştirmek. Örneğin bir !pozisyon koymak normal> <> 0 0gibi görünür 003b*pve p1-onunla olur 111-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1--11-11-p.

Değişiklikten sonra yönerge işaretçisi (IP) kodu sarar ve değiştirilen parçayı çalıştırır. "Blok" durumunda IP, "satır" durumundan farklı olacak şekilde daha fazla değişiklik yapılması için (daha sonra tekrar yönlendirildi) yönlendirilir. "Satır" durumunda aynı iki yönlendirme gerçekleşir, ancak aralarında kod yoktur, bu nedenle bunların etkisi yoktur.

4 vaka için son oluşturulan kodlar (değişmeyen p1-parçaları atlayarak ):

row:      "wor"\ooo;

column:   "loc"ooo;

diagonal: "dia"ooo;

block:    "wor"\"klb"ooo;

Kod boyutu 4 MB ve koda buradan erişilebilir . (Çalıştırmakta zorluk yok.)

Jeneratör python3 programına buradan erişilebilir .


14

CJam, 13 12 benzersiz karakter, N = 5

"row"
cd;"a
oaiaa
l"aa;
"blk"

Olabildiğince düz ileri

GÜNCELLEME : Alanı aRunner112 tarafından belirtildiği gibi (bu durumda işlem yok) olarak dönüştürüldü

Buradan çevrimiçi deneyin


2
Her boşluk a, benzersiz karakter sayısını 12'ye düşürmek gibi bir karaktere dönüştürülebilir , değil mi?
Runer112

@ Runer112 Lanet olsun! Bahşiş için teşekkürler!
Doktor

8

Bash, 19 benzersiz karakter, N = 19

trap echo\ row exit
t=t trap exit      
t=t echo blk       
exit               
=                  
t    e             
      c            
e      h           
c       o          
h                  
o         d        
           i       
c           a      
o                  
l                  
  • İlk satır trap echo\ row exit. Bu echo row, komut dosyası çıktığında yürütülmesine neden olur (yalnızca ilk satır)
  • İlk sütun ttt=t echo col
  • Diyagonal t=tt echo dia
  • Tam blok, ilk satırda ayarlanmış olan EXIT işleyicisini iptal ederek çalışır, echo blkardından çıkar.

1
exitBenzersiz karakterleri 4 azaltmak için küçük harf kullanabilirsiniz . exitKomutu bir sonraki satıra taşıyabilir ve tüm noktalı virgülleri boşluklarla değiştirebilirsiniz.
jimmy23013

6

> <> , 14 benzersiz karakter, N = 10

"wor"\ooo;
     "    
l a  k    
o  i l    
c   db    
"    "    
o    oo   
o    o o  
o    o  o 
;    ;   ;

2D bir dilde oldukça basit. Tek zor yanı, ve \arasında ayrım yapmamız gerektiğidir .rowblk


randomra notları p1-üç karakter çözümü verecek, ancak üretmek gerçekten can sıkıcı (ve muhtemelen kazanamayacak).
Sp3000

3

Brainfuck, 2 benzersiz karakter, N = 378

Kuralların hafifçe bükülmesi ile.

Program biraz büyük, bu yüzden Pastebin'de bir bağlantı .

row, colVe diaprogramlar basittir. Sadece doğru ASCII koduna ulaşılana kadar bayt hücresini arttırırlar ve sonra çıktı alırlar. Harf zaten geçtiyse, hücre taşana kadar artar, böylece tekrar 0'dan başlayabilir.

blkHafif kural bükülme meydana nerede programıdır. blkMeydan okumada sorulduğu gibi "tam metni " yazdırmak için , görüntüleme konsolunu / terminalini desteklemesi gereken arka alanlar (ASCII kodu 8) kullanılır. row/ col/ diaProgramlarından gelen hatalı değerler yazdırıldığında, birkaç geri silme kontrol kodu çıkararak bunların kaldırıldığından emin olurum. İşleri kolaylaştırmak için, bir noktada çıkarılan tüm hatalı değerlerin yazdırılabilir ASCII aralığının bir parçası olmasını sağladım.


2

C (gcc) , 26 benzersiz karakter, N = 29

*w;main(){printf(w?w:"row");}
ww;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;/*;;;;;;;;;;;;;;;;;;;;;;;;
m;;m;;;;;;;;;;;;;;;;;;;;;;;;;
a;;;a;;;;;;;;;;;;;;;;;;;;;;;;
i;;;;i;;;;;;;;;;;;;;;;;;;;;;;
n;;;;;n;;;;;;;;;;;;;;;;;;;;;;
(;;;;;;(;;;;;;;;;;;;;;;;;;;;;
);;;;;;;);;;;;;;;;;;;;;;;;;;;
{;;;;;;;;{;;;;;;;;;;;;;;;;;;;
p;;;;;;;;;p;;;;;;;;;;;;;;;;;;
r;;;;;;;;;;r;;;;;;;;;;;;;;;;;
i;;;;;;;;;;;i;;;;;;;;;;;;;;;;
n;;;;;;;;;;;;n;;;;;;;;;;;;;;;
t;;;;;;;;;;;;;t;;;;;;;;;;;;;;
f;;;;;;;;;;;;;;f;;;;;;;;;;;;;
(;;;;;;;;;;;;;;;(;;;;;;;;;;;;
";;;;;;;;;;;;;;;;";;;;;;;;;;;
c;;;;;;;;;;;;;;;;;d;;;;;;;;;;
o;;;;;;;;;;;;;;;;;;i;;;;;;;;;
l;;;;;;;;;;;;;;;;;;;a;;;;;;;;
";;;;;;;;;;;;;;;;;;;;";;;;;;;
);;;;;;;;;;;;;;;;;;;;;);;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
};;;;;;;;;;;;;;;;;;;;;;;};;*/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;*w="blk";

Çevrimiçi deneyin!


1

Yakut, 24 benzersiz karakter, N = 17

trap(0){$><<:row}
rr=a=:blk;%;00000
a0a00000000000000
p00p0000000000000
(000(000000000000
00000000000000000
)00000)0000000000
{000000{000000000
$0000000$00000000
>00000000>0000000
<000000000<000000
<0000000000<00000
:00000000000:0000
c000000000000d000
o0000000000000i00
l;;trap(0){$><<a;
};000000000000;{}

Çevrimiçi deneyin!

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.