Döndürüldüğü Zamanları Çıkturan Dikdörtgen Bir Program Yazın


63

Başlık her şeyi söylüyor. Amacınız, döndürülmüş ve yeniden çalıştırılabilen 90 ° Saat Yönünün Tersine Dönme (CCW) dönüşlerinin sayısını elde etmek için yeniden çalıştırılabilecek karakterlerin awxh dikdörtgenini oluşturan bir program yazmaktır.

Örneğin, eğer 3 × 2 program

abc
def

sorunu çözdü, başlangıçta 0 çıktısını alacaktı ve art arda 90 ° CCW dönmesi

cf    fed    da
be    cba    eb
ad           fc

sırasıyla 1, 2 ve 3'ü verirdi.

Yorumların kullanılması bu, çoğu dilde önemsiz bir görevdir. Örneğin Ruby'de, 7 × 7 bir dikdörtgende yapılabilir:

###p###
### ###
###1###
p 0#2 p
###3###
### ###
###p###

Buradaki zorluk, herhangi bir yorum yapmadan bunu yapmak .

puanlama

Puanınız w * h, dikdörtgenin alanıdır. Yeni satırlar hariçtir. Başka bir deyişle, kod golf, yeni satırlar sayılmaz.

Ruby örneğinin puanı 49'dur (elbette yorumu olduğundan geçersizdir).

notlar

  • Kodunuz, satırların sonunda eksik karakter içermeyen dikdörtgen olmalı.
  • Arzu ederseniz 0 1 2 3 yerine diğer "mod 90 °" değerlerini de verebilirsiniz. Yani, 0 yerine 8, -1 yerine 1 olur.
  • Çıktı konsola veya bir dosyaya gidebilir.
  • Standart boşluklar uygulanır.

Umarım bu, benim ilk sorum, bazı insanları gerçekten etkiliyor. Keyfini çıkarın!


1
Yorumun ne olduğu konusunda daha net olmak gerekirse, yorum herhangi bir değerlenmemiş kod mu? Ayrıştırılmamış kod?
isaacg,

Demek istediğim, dilinizin geleneksel "yorum karakterlerinin" hiçbiri döndürülmüş 4 sürümden birinde görünmemesi gerektiğidir. Bu yüzden C ++ için, yan yana iki eğik çizgi görünmemelidir, ancak biri yalnız kullanılabilir. Aynı şekilde / * ile. Umarım bu açıklığa kavuşturur.
Calvin'in Hobileri

Yorum karakteri olmayan dillerden ne haber?
isaacg,

Yani echo 0;exit;ebash gibi kod izin verilir?
jimmy23013,

Yorum yapmanın yolu yoksa endişelenmenize gerek yok. @ user23013 Bu bash iyidir.
Calvin'in Hobileri,

Yanıtlar:


43

APL (1x3 = 3)

5!3

Bu çözüm, mod 4'ün herhangi bir çıktının işe yaraması için ekstra kural kullanır.

APL'de, genellikle veya olarak bilinen elemanlardan x!yseçim yapma yolunun sayısıdır . Her dönüşün doğru cevabı verdiğini kontrol edelim.xybinom(y,x)choose(y,x)

0 rotasyon

5!3

3'ten 5 öğe seçmenin bir yolu yoktur, bu yüzden otomatik olarak yazdırılan 0 alırız.

1 CCW dönüşü

3
!
5

APL, sayıyı 3, işleci !ve ardından sayıyı alan her satırı mutlu bir şekilde değerlendirir ve bu sayıların 5yalnızca sonunu (1 5) değiştirir ( 4).

2 CCW dönüşü

3!5

Bu binom(5,3)olan (5*4*3*2*1)/(3*2*1)/(2*1) = 102 mod 4 olan.

3 CCW dönüşü

5
!
3

Daha önce olduğu gibi, yalnızca son değerlendirilen değer 3yazıcıdır.

Aslında APL'yi tanımıyorum, bu yüzden lütfen açıklamalardan herhangi birinin yanlış olup olmadığını söyleyin. Bu sitedeki ilk dil olarak deneme yanılma yoluyla buldum :

  1. Bir ifadenin sonucunu otomatik olarak yazdırır
  2. Birden fazla ifade satırı göz önüne alındığında, yalnızca sonuncuyu çıkarır.
  3. Bir hat üzerinde tek başına duran bir operatör ile ilgili herhangi bir sorun yok
  4. Operatör ekini alır
  5. Asimetrik (aRb! = BRa) ve çeşitli sayıları döndürecek kadar esnek olan tek karakterli bir aritmetik ikili işlecine sahiptir.

(5) için APL ikili fonksiyonlar listesine girdim . İlk aday operasyonum, /C ve Python 2'nin tamsayı bölümü idi, ancak APL bölümü yüzerlik ÷veriyor. Üsümleme caziptir, ancak başarısız olur ave a^baynı pariteye sahiptir, ancak ardışık rotasyonlarla elde edilir ( b=0ancak o zaman hariç b^a=0). Boolean operatörleri gibi <vermek 0ve 1180 derece, ki işe yaramaz. Sonunda binom işlecini buldum ve !bu işe yarayana kadar sayıları denedim.

Quincunx'a, 2x2'den daha küçük bir çözüm olduğuna güvendiği için teşekkür ederiz.


6
Adam, ezoterik olmayan bir dil kullanan ve kazanan bir cevap görmek güzel .
Stuart P. Bentley

Bunu, benim kurallarım uyarınca en kısa olduğu için cevap olarak kabul ettim, ancak Ventero'nun cevabını ( codegolf.stackexchange.com/a/33162/26997 ) çok onur verici bir söz yapmak istiyorum . Sorunun gerçek özünü takip eder.
Calvin'in Hobileri

Ayrıca, J'de verdiğiniz biçimde çalışır.
ɐɔıʇǝɥʇuʎs

Aslında, APL hem 3'ü hem de 5'i 90 ° dönüşte yazdırmıyor mu?
FUZxxl

@ FUZxxl Sanırım bu sadece ngn / apl ile çalışıyor.
Adám

40

Yakut, 7 × 9 (63)

 30;p  
0||p=p 
0|0;p;p
;p;p|p;
p=p ||0
;p   p;
2||p =p
 00;1  
     p 

Diğer çözümden biraz daha uzun, ancak en azından bu çözüm herhangi bir örtük baskıya veya kuralın kötüye kullanılmasına bağlı değil. Dört rotasyonun tümü için, tam kod ayrıştırılır ve kısa devreden başka, tümü yürütülür. Şaşırtıcı bir şekilde, kodda kesinlikle simetri yok

Bu çözüm p, aynı isimde bir değişken tanımlanmış olsa bile, yine de (numaraları yazdırmak için kullanılan) işlevi çağırmanın mümkün olduğuna dayanmaktadır . Örneğin, benzeri bir şey değişkeni argüman olarak p pişlevle çağırır (bu nedenle, değeri basılır ).ppp

Kodda kullanılan bazı ortak ifadeler için açıklama:

  • p: Yukarıda bahsedildiği gibi, bu bir işlev çağrısı veya değişkendir. Değişken tanımlanmadığında, bu işlevi phiçbir şey yapmadan ve döndüren bağımsız değişkenler olmadan çağırır nil.
  • p p: Değişkeni yazdırır p.
  • p|x: pİşlev ne zaman , aynıdır nil|x, değerine bağlı olarak doğru / yanlış döndürür x. Bir ptamsayıysa, bitsel veya. Her iki durumda da, bu ifadenin hiçbir yan etkisi yoktur.
  • p=p||x: Etkili bir şekilde p||=x(koşullu atama) aynı şekilde sözdizimsel olarak geçerli olma ve tersine çevrilmemesi avantajıyla.

Simetrik versiyon (9 × 10 = 90)

    p    

  0 * 0  
  00100  
  0||2* p
p *0||0  
  00300  
  0 * 0  

    p    

Bu kısa simetrik çözeltisi (C 2 Ben ile gelebilir baskı rakamları görmezden).

Test komut dosyası

İşte yukarıdaki kodu doğrulamak için bir test betiği ( #satır sonlarına boşluklar sıyrılmayacak ve yürütmeden önce kaldırılacak şekilde eklenmiştir):

rotate=->s{s.split($/).map{|i|i.chars.reverse}.transpose.map(&:join).join($/)}

s=<<EOD.gsub(?#,"")
 30;p  #
0||p=p #
0|0;p;p#
;p;p|p;#
p=p ||0#
;p   p;#
2||p =p#
 00;1  #
     p #
EOD


puts ">>> 0°"
eval s
puts ">>> 90°"
eval rotate[s]
puts ">>> 180°"
eval rotate[rotate[s]]
puts ">>> 270°"
eval rotate[rotate[rotate[s]]]

10
En kısa olmayabilir ama bu tam da aradığım şaşkınlık yaratan türden bir şey: D
Calvin'in Hobileri

1
@ Calvin's Hobbies Bu, "Kodunuz satırların sonunda eksik karakter içermeyen dikdörtgen olmalı" kısıtlamasına uyuyor mu?
Joshua Taylor

@JoshuaTaylor Dikdörtgen, bazı çizgiler sadece boşluklarla doludur (ilgilendiğim kadarıyla bir karakterdir). Bu herhangi bir nedenden ötürü kısıtlamayı yerine
getirmezse

@Ventero Kesinlikle bu yasal umarım; Sadece soruda ne anlama geldiğini anlamaya çalışıyorum.
Joshua Taylor,

1
Boşluklar ile @Ventero Dolgu (veya yorumlar ve yeni satırların yanı sıra gerçekten bir şey) gayet iyi.
Calvin'in Hobileri

33

GolfScript, 4 (2x2)

43
12

Baskılar 4312olan 0(mod 4). Rotasyonlar 3241(1 mod 4), 2134(2 mod 4) ve 1423(3 mod 4) yazdırır .

Tarafından istendi:

Arzu ederseniz 0 1 2 3 yerine diğer "mod 90 °" değerlerini de verebilirsiniz. Yani, 0 yerine 8, -1 yerine 1 olur.

Aslında bunun için çalıştığı birçok sayı kümesi var. Bunları bu Python programında buldum:

def f(a,b,c,d):
    return int("%i%i%i%i"%(a,b,c,d))
for a in range(10):
    for b in range(10):
        for c in range(10):
            for d in range(10):
                candidate = f(a,b,c,d) % 4 == 0
                candidate &= f(b,d,a,c) % 4 == 1
                candidate &= f(d,c,b,a) % 4 == 2
                candidate &= f(c,a,d,b) % 4 == 3
                if candidate:
                    print("%i, %i, %i, %i"%(a,b,c,d))

Her ne kadar programın çıktı vermesine rağmen 0(muhtemelen işe yaramazsa), geçerli çözümler formdadır.

ab
cd

Nerede a∈{4,8}, b∈{3,7}, c∈{1,5,9}, d∈{2,6}. (a,b,c,d)∈{4,8}×{3,7}×{1,5,9}×{2,6}24 çözüm olan IE .


7
Çok zeki. Dürüst olmak gerekirse, ekstra kuralın zararsız olduğunu düşündüm.
Calvin'in Hobileri,

4
@Herkese Bunun mümkün olan en küçük program olmadığını unutmayın. 2x1 mümkündür ve mümkün olan en küçüktür. Öyleyse işe başla!
Justin,

1
@isaacgYour score is w*h, the area of your rectangle. Newlines are excluded. In other words, code-golf, newlines not counted.
undergroundmonorail

2
@Quincunx Peki o zaman gönderin!
tomsmeding

1
Buradaki dilin, değerlendirdiği son sayıyı basitçe bastırdığını varsayarsak, 1 * n (tek numaralı) bir çözümün mevcut olduğuna inanmıyorum n. Bunun nedeni, tüm sayının paritesi en sağdaki hanenin paritesine eşittir, ancak 90 derece aradaki dönüşlerin farklı pariteler vermesi gerekir. Yani, 2*2bu yaklaşım için minimumdur.
xnor

30

Python - 23 x 23 = 529

Tamam, bu sorunun zaten bir kazananı var, ancak henüz Python çözümü yok. Bu yüzden düşündüm - ağır! - ve printdiğer yönlerden birinden ayrıştırıldığında hantal komutun herhangi bir yönde hata yapmadan çalışmasını sağlamak için bir yol buldu .

Atılım şu satırdı:

'"\'';forward_code;"';backward_code;""\'"''

İken forward_codeyürütüldüğünde, backward_codebir dize parçası ve dolayısıyla basılan değildir. Bu tam olarak geriye doğru okurken başka bir yoldur.

Bu yüzden iki yön daha ile birlikte ve tüm tekliflerin doğru bir şekilde eşleşmesi için ince ayar yapıldıktan sonra aşağıdaki çözüme ulaştım:

''"''""''"''"''"'"''""'
"  ""                 "
"  \\                 "
'"\'';print 1;"'""\'"''
'"\''"';3 tnirp;""\'"''
"  ;""                "
"  p'                 "
'  r;                 '
'  i2                 '
"  n                  "
"  tt                 "
'   n                 '
'  4i                 '
"  ;r     .-=<>=-.    "
' \"p    /__----__\   '
"  ';'  |/ (')(') \|  "
"  ""    \   __   /   "
'  ""    .`--__--`.   '
"  \\   /    :|    \  "
'  ''  (_)   :|   (_) '
'  ""    |___:|____|  '
"  ''    |_________|  "
''"''""''"''"''"'"''""'

Düzenleme: Tüm bu boşluklarla baş etmenin bir yolunu buldum. ;)


p=printŞu anda çok fazla boşluk bulunduğundan, dosyaya da eklemenin bir yolu var mı? (Python 3, elbette)
isaacg,

@isaacg: Sanmıyorum. Tanımı p=printda uzundur. Ve daha önemlisi: pKodu çevirdikten sonra tekrar kullanamazsınız !
Falko

Sanırım haklısın. Yine de iki kötü.
isaacg,

12
Aday Gösterildi: En İyi Beyaz Alan Ödülü Kullanımı.
primo

24

TEMEL, 64

Kazanmayacak, ama yine de burada. ( Sincap Temelinde Test Edildi )

?0:END:?
:::::::1
D:::::::
N::::::E
E::::::N
:::::::D
3:::::::
?:DNE:2?

Not: BASIC'in çeşitli lehçelerinde ?kısaltılmıştır PRINT. Kodda çok sayıda sözdizimi hatası olmasına rağmen END, ilk satırdaki ifade, tercüman tarafından görülmelerini önler.


1
Aslında puanların sırasıyla 64 ve 16. Newlines sayılmaz. Ayrıca, neden cevabı bölmedin?
Justin,

Oh, o kısmı özledim. Ortak yer işgal etmeselerdi cevapları bölerdim. Aksi takdirde çok nokta var gibi görünmüyor :-)
squeamish ossifrage

Artık son değilsin :-)
Justin,

Güzel bir karakter sayısı elde etmen için sana bonus puan veririm. Gerçek +1 ENDolsa yaratıcı kullanım içindir :)
CompuChip

21

Pyth , 9 karakter (3x3)

0 1

3 2

Pyth'ta, bir boşluk tarafından belirtilmedikçe her şey varsayılan olarak yazdırılır. İlk satırdan sonraki satırlar kullanıcı girişi içindir ve bu programda değerlendirilmez.

9 karakter almanın başka bir yolu:

"0"
3 1
"2"

Pyth 1.0.5 , 4 karakter

Son zamanlarda yapılan pyth değişiklikleri 2 basamaklı sayıların üretilmesini zorlaştırsa da (geri almayı düşündüğüm bir değişiklik), Pyth'in eski sürümleri, iki satırlı basit sayı oluşturma işlemine sahiptir; yoksayılır, aşağıdaki çözümü verir:

32
41

32,21,14,43 yazdırır.


Bu sadece eğlenceli. +1
seequ

Shucks, o kadar kolay olmadığını umuyordum. Orta çizginizde 3 karakter eksik ama sanırım buradaki otomatik biçimlendirme yüzünden.
Calvin'in Hobileri

@ Calvin'in Hobileri Üzgünüm, anladım. Sondaki boşluklarımı parçaladı.
isaacg,

@ Quincunx Oh, puanlamanın o bölümünü özledim. Düzeltmeler için teşekkürler.
isaacg,

18

Befunge, 16

0.@1
@@@.
.@@@
3@.2

Açıklama: rakamlarından 0için 9yığına karşılık gelen sayıda itme, .yığından bir değer çıkar ve bir tam sayı olarak basar ve @program sona erer.

( burada test edilmiştir )


Bu, saat yönünün tersine döndürülme sayısını çıkarmaz mı?
seequ

@TheRare Evet. Öyle. Yapması gereken bu.
Justin,

1
Tamamen kör gibi görünüyorum. Bundan dolayı bir +1 al.
seequ

Befunge !!! Hala sonsuza dek sonsuza dek sonsuza dek en sevdiğim dilim.
steffen

16

Piet, 49

Bir Piet Programı

Sadece sarı ve kırmızı renkleri kullanmak ve kabaca simetrik yapmak için bir noktaya değindim. Döndürüldüğünde, 0, 1, 2 veya 3 olarak basar.


1
İş için doğru araç gibi görünüyor.
Robert Fraser,

O, bu programlama dilini bulmak için ağladım! Şu anda. Güzel. Pek çok yönden! Teşekkür ederim!
steffen

15

GNU dc , 6 (3x2)

Bunun "mod 90 °" kuralının gevşetilmesini gerektirmemek için en kısa cevap olduğunu düşünüyorum:

3z1
0p2

Çıkışlar 0, 1, 2ya da 3her bir dönüş için.

İçin 0, 2ve 3rotasyonlar, psadece çıkar ve yığın itilmiş için hazır son numarayı basar. İçin 1döndürme, zyığına iter geçerli yığın derinliği (1), daha sonra pçıkar ve yazdırır.


1
Yani 311 / 0p2 de işe yarar mı?
Neil,

@Neil Evet, iyi olan. Ancak golf puanını etkilemez :)
Digital Trauma

Golf puanını etkiliyor, ancak olumsuz, yeni satırlar sayılmadığından, eğik çizgilerden dolayı.
M.Herzkamp,

@ M.Herzkamp Benim varsayım, Neil'in yeni bir karakter karakteri 311\n0p2olduğu anlamına geldiği idi \n. Aksi takdirde, dc bağlamında anlamsız olacaktır.
Dijital Travma

10

GolfScript, 9 (3x3)

0}1
} }
3}2

Kuralları kötüye kullanma şekli. }Uygun olduğu takdirde bir program sonuna kadar olur {, ve yığın içeriği programın sonunda basılır.


Newline'ı karakter olarak saymayı unutma.
isaacg,

2
@isaacgYour score is w*h, the area of your rectangle. Newlines are excluded. In other words, code-golf, newlines not counted.
undergroundmonorail

Bunun }dengesiz olabileceğini bilmiyordum . İyi numara.
Peter Taylor

9

JavaScript, 4

03
12

Bir javaScript konsolunda bu programı (veya bu programın bir dönüşünü) yürüttüğünüzde, sadece son satır değerlendirilir ve konsolda yankılanır.

Yani:

12 modulo 4 == 0
01 modulo 4 == 1
30 modulo 4 == 2
23 modulo 4 == 3

İşte aynı şekilde çalışan 2x2 programların tümü:

03
12

03
16

03
52

03
56

03
92

03
96

07
12

07
16

07
52

07
56

07
92

07
96

43
12

43
16

43
52

43
56

43
92

43
96

47
12

47
16

47
52

47
56

47
92

47
96

83
12

83
16

83
52

83
56

83
92

83
96

87
12

87
16

87
52

87
56

87
92

87
96

Diğer bir deyişle,

ab
cd

a [0,4,8] 'de, b [3,7]' de, c [1,5,9] 'da ve d [2,6]' dadır


8

CJam / GolfScript - 3 * 3

2;3
;7;
1;0

Noktalı virgül önceki sayıyı açar, böylece yalnızca sağ alt köşe yazdırılır.


6

Aheui , 8

바몽희뷸
뷷희몽반

Aheui'nin 1'i yığına iten bir mektubu olmadığı için, 0, 5, 2 ve 3'ü basmaya karar verdim.

Açıklama: 바 ve 반, sırasıyla 0 ve 2 tuşlarını istifin üzerine itip imleci bir karakter sağa hareket ettirir. 뷸 ve 뷷 sırasıyla 5 ve 3 tuşlarını istifin üzerine itip imleci iki karakter aşağıya hareket ettirir. 몽 yığındaki sayıyı çıkarır ve yazdırır ve imleci bir karakter yukarı taşır. 희 programı sonlandırır.


5

JavaScript

(Tarayıcı konsolunda, kabukta veya başka bir REPL'de girildi, bu nedenle sonuç yazdırıldı)

1+2
-3-
4+5

İfadeler, önemli olmayan yeni satırlar ve sonucun otomatik olarak yazdırılması ile başka diller için çalışılmalıdır.


2
Bunun arkasındaki fikri sevdim ama her zaman 1'i basmıyor mu (mod 4)?
zennehoy

2
Daha basit bir varyasyon olabilir '2,3\n,0,\n1,0'.
Keen,

Döndüğünde farklı sonuçlar verir. @Cory, Bu zekice! Virgül operatörü olmayan bir dilde çalışmaya alışkınım.
20'de

@lrn Evet, farklı sonuçlar verir, ancak bu şart değildir. Program, döndürülmediğinde 0 (mod 4) ve ilgili sayı kadar döndürüldüğünde 1, 2 veya 3 (mod 4)
yazdırmalıdır

Orijinal posterin ikinci notası döndürülmüş versiyonlar için, farklı oldukları sürece herhangi bir değere izin verir.
LRN

5

Matlab / Octave - 144 100

Golf: 10 x 10 = 100

....d.....
....i.....
....s.....
... p2 ...
disp  1...
...3  psid
... 4p ...
.....s....
.....i....
.....d....

Alternatif çözüm: 15 x 15 = 225

.......d.......
.......i.......
.......s.......
...    p    ...
...         ...
...    4    ...
...    .    ...
disp 1...3 psid
...    .    ...
...    2    ...
...         ...
...    p    ...
.......s.......
.......i.......
.......d.......

Sanal ve yatay operatörler 'disp' p harfini paylaşırsa, ilk çözüm 8x8 boyutuna düşürülebilir mi? ...d.... ...i.... ...s2... disp 1.. ..3 psid ...4s... ....i... ....d...
AMK

@ AMK: Maalesef, bu satırda bir sözdizimi hatası veriyor ..3 psid. Satır sonunu belirtmek ve kalan karakterleri yoksaymak için her satırın başında en az üç nokta gerekir.
Falko

5

Perl 5x7 (35)

1+p+t+1
-print+
1+i+i+1
+tnirp+
1+t+p+1

Partiye biraz geç kaldın. Yalnız -hangi sayının yazdırılacağını belirler.


4

JavaScript, 3

2
1
4

Çalışıyor ... üs 7'de.

Baz 9 versiyonu:

2
7
0

açıklama

Etkileşimli bir şekilde çalıştırıldığında, örneğin bir hata ayıklama konsolundan, son ifadenin / ifadenin değeri çıkarılır.

4 7 = 4 100 (mod 4 )
412 7 = 205 101 (mod 4 )
2 7 = 2 102 (mod 4 )
214 7 = 109 103 (mod 4 )

Herhangi bir garip baz için benzer çözümler bulunabilir.


Bu işaretlendi, ancak soruyu ya da cevabı anlamadım, bu yüzden atlamak zorunda kaldım. Seçmenler, indirimlerini açıklayan bir yorum yaptığında iyi olurdu.
Rainbolt

@Rusher 7 bit üssünü anlamadıklarından şüpheleniyorum.
primo

3

Befunge, 12 (6x2)

Befunge'nin iki boyutlu doğasından en iyi şekilde faydalanarak ve kod yolunun iki oryantasyonunda dikey olarak çalıştırarak mevcut Befunge'nin cevabında küçük bir gelişme sağlamayı başardım.

0.@.1v
v3.@.2

Çevrimiçi deneyin: 0 , Döndürme 1 , Döndürme 2 , Döndürme 3 .


2

Mermer, 7 * 14 = 98

.. \/ \/ .. ..
.. 31 \\ 32 \/
\/ \\ \/ \\ \/
\/ 30 \\ 33 ..
.. .. \/ \/ ..

Döndürüldüğünde her bir hücrenin sağlam kalmasını mı bekliyorsunuz?
Sparr

2

Ahh! / Aargh! (* 4 = 16 4)

İş için doğru aracı kullanmak neydi? Yorum yok (genel olarak dilde).

Tüm (J üretilen: programları ailesi ((|.@:|:) ^: (i. 4)) >'hpqh';'q01p';'p32q';'hqph'ya ((|.@:|:) ^: (i. 4)) 4 4 $ 'hpqhq01pp32qhqph')

hpqh
q01p
p32q
hqph

bir kez döndürülmüş:

hpqh
q12p
p03q
hqph

iki kez döndürülmüş:

hpqh
q23p
p10q
hqph

üç kez döndürülmüş:

hpqh
q30p
p21q
hqph

Bunu açıklamak için, "girintili" bir sürüme bakmak en iyisi olabilir (Bu, tüm döndürmelerde de geçerlidir):

hhpq h
  0  h
q   1p
p3   q
h  2  
h qphh

Bu versiyon, programın her bir rotasyon için birer tane olmak üzere 4 ayrı bölümden oluştuğunu göstermektedir.

  • h - kontrol akışını sola ayarla

  • p - Veri / kod raster altındaki öğeyi yazdır

  • q - programdan çık


2

Şamandıra - 9 × 5 = 45

görüntü tanımını buraya girin

Konsola 4, 1, 2 veya 3 yazdırır.

'Siyah'ın geçerli bir talimat olduğunu (NOP) ve sözdizimsel olduğuna dikkat edin. Onsuz başlangıç ​​pozisyonunu bulamaz. Böylece, dikdörtgenin içindeki tüm pozisyonlar işgal edilir.


1

Eleman, 2x3 = 6

1*
`2
3 

Bu, `ortada her iki tarafta bir sayı bulunan 3x3 saf çözüm üzerinde bir gelişmedir . Yukarıda gösterilen 0 olayı en ilginç olanıdır, çünkü *3'ü 0 almak için hiçbir şeyle çarpmamak için kullanılır. Bunun dışında o kadar da karmaşık değildir.

Boşluğu garip bulursanız, hariç, hemen hemen başka bir karakterle değiştirebilirsiniz []{}`_.

Başvuru için, işte diğer üç dönüş:

case 1
*2 
1`3

case 2
 3
2`
*1

case 3
3`1
 2*

0

Çip, (2x5) 10

b~
+a
~t
e*
 f

*kuzey, doğu, güney ve batı (kaynak): Bütün komşu elemanlarını harekete geçirir
~batıdan aktif değilse, doğu komşusu (NOT kapısı) aktive (burada aktif asla)
tgeçerli bayt baskı sonrasında yürütme sonlandırır
abiti ayarlayarak 0x01çıkış ait
bsetleri bit 0x02çıkışının
ebiraz setleri 0x10çıktı
fbiti ayarlayarak 0x20çıktı
+, herhangi komşusu tarafından aktive eğer aktive diğer tüm komşuları (tel)

Chip, -wbayrak (giriş olmadan yürütülmesine izin vermek için) veya çalışması için bir giriş gerektirir.

Baskılar 0, 1, 2, veya 3ASCII. Kod noktaları ise 0x00için 0x03arzu edilir, kaldırma eve fdaha sonra boşluğu doldurmak için alan hareket.


0

Japt , 3 * 1 = 3 bayt

5zB

Çevrimiçi deneyin: olduğu gibi , bir kez , iki kez döndürülmüş , üç kez .

Sırasıyla 0, 5, 2, 11 çıkışları.

Değişken B11 değerini tutar ve Number.z(other)taban bölümüdür (herkes görünüşte aradı: p). Çok satırlı kod için, son satır çıktıya aktarılır, bu sadece burada sabit bir değerdir.


2 * 2 = 4 bayt

2J
1T

Çevrimiçi deneyin: olduğu gibi , bir kez , iki kez döndürülmüş , üç kez .

Sırasıyla 0, 21, 2, -1 çıktılar.

T0 tutar ve J-1 tutar.

İşin püf noktası, eğer iki hazır bilgi veya değişken yan yana konulursa, virgül eklenir ve çıktının en sonuncusu olur.

2 * 2 JS çözümü de Japt’de çalışıyor.

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.