Ateşle Öldür


30

Feragatname: Bu soruda anlatılan hikaye tamamen kurgusaldır ve yalnızca bir tanıtım sağlamak amacıyla icat edilmiştir.

Ben kötü bir çiftçiyim ve bölgemdeki buğdayın fiyatını yükseltmek için etrafımdaki tüm çiftçilerin tarlalarını yakmaya karar verdim. Tarlaların alevler içinde yükseldiğini görmek isterdim (böylece kötü gülüşümü kullanabilir ve ellerimi glee ile birlikte ovalayabilirim), ama aynı zamanda izlemenin kapana kısılmasını istemiyorum, bu yüzden bu alanın simülasyonunu yapmanı istiyorum. Benim için yakıldı.

Senin görevin:

Bir alana girdi olarak alan ve tüm alanın kül olana kadar yanan aşamalarını döndüren bir program veya işlev yazın. Yanmakta olan alanın belirli bir bölümü alevin yoğunluğunu temsil eden bir tamsayı ile temsil edilir. Bir yangın "1" de başlar ve "2" ye, sonra "3" ye, vb. Geçer. Bir yangın "4" e ulaştığında, alev alabilen yanıcı alanları doğrudan (çapraz olarak değil) yakalar. "8" e ulaştığında, bir sonraki yinelemede yanar ve "A" ile temsil edilen külü dönüştürür. Bir alana henüz ateş tarafından dokunulmadığında, "0" ile temsil edilir. Örneğin, alan şuna benziyorsa:

100
000

Programınız bunun çıktısını almalıdır:

100
000

200
000

300
000

410
100

520
200

630
300

741
410

852
520

A63
630

A74
741

A85
852

AA6
A63

AA7
A74

AA8
A85

AAA
AA6

AAA
AA7

AAA
AA8

AAA
AAA

İsterseniz, yukarıdaki sembolleri, birbirlerinden tutarlı ve farklı olmaları koşuluyla, seçtiğiniz herhangi bir sembol grubuyla değiştirebilirsiniz.

Giriş:

Alanın başlangıç ​​konumu, yukarıdaki gibi yeni satırlarla sınırlandırılmış bir dize gibi herhangi bir standart biçimde.

Çıktı:

Her yinelemedeki alan, bir dizi olarak veya bazı karakterlerle sınırlandırılmış bir dize olarak yanar.

Test Durumları:

0301
000A
555
 |
 v
0301
000A
555

1412
010A
666

2523
020A
777

3634
030A
888

4745
141A
AAA

5856
252A
AAA

6A67
363A
AAA

7A78
474A
AAA

8A8A
585A
AAA

AAAA
6A6A
AAA

AAAA
7A7A
AAA

AAAA
8A8A
AAA

AAAA
AAAA
AAA

puanlama:

Bu , bayt cinsinden en düşük puan kazanıyor!


1
Şekil ne kadar değişebilir? Dikdörtgen olmayan parçalar daima sağ kenarda "delikler" midir, yoksa alanda boşluklar olabilir mi?
PurkkaKoodari

3
Öyleyse 4'e çarpan bir şey bitişik karelerde ateş yakıyor, fakat 4'te veya daha üstü başlayan bir şey değil mi? Bu çok gerçekçi değil.
laszlok

14
"Feragatname: Bu soruda anlatılan hikaye tamamen kurgusaldır ve yalnızca bir tanıtım sağlamak amacıyla icat edilmiştir." -> "Ben kötü bir çiftçiyim [kötü şeyler yapmak isteyen]" ile başlar. Çok zeki. Yanan alanları şimdi sizinle hiç kimse ilişkilendirmeyecek .
J_F_B_M

3
İlk külün alanı ikiye ayırması mümkün mü, böylelikle bir kısmı yanmayacak mı?
aschepler

9
4'ün üzerine yayılmayan yangın çok üzücü ise, 1-4'ün ateş kazanma yoğunluğu olduğunu ve 5-A'nın yandığını gösterir.
Jeremy Weirich

Yanıtlar:


1

APL (Dyalog) , 52 bayt *

Devraldı ⎕IO←0birçok sistemde varsayılan olan. Boş slotlar için 0, yanmayan alanlar için 1, yeni yangın için 2, yangın yayılması için 5 ve kül için 10 kullanarak alan alır. Giriş, en az 3 × 3 olmalıdır, bu, ek satırlar ve sütunlar sıfırlarla doldurulabilir (OP formatındaki boşluklar).

{}{1=c4r←,⍵:1+4r/⍨9⍴⍳210cc}⌺3 3⍣{⍺≡⎕←⍵}

Çevrimiçi deneyin!

Benim formatım doğruluğu kontrol etmeyi zorlaştırıyor, bu yüzden burada OP formatına ve ondan çevirmek için işlem öncesi ve sonrası eklenmiş bir versiyon var.

⍣{} Kadar:

 bir sonraki nesil

 özdeştir

⎕←⍵ şimdiki nesil, çıktı

{}⌺3 3 Her hücreyi Moore mahallesine uygulanan bu fonksiyonun sonucuyla değiştirin:

 ,⍵ argümanı karıştırmak (düzleştirmek); dokuz elementli liste verir

r←r  olarak ata

4⊃ dördüncü elemanı seçin; merkez, yani orijinal hücre değeri

c← atamak c

1= biri buna eşit mi?

: öyleyse, o zaman:

  ⍳2 birinci ɩ ntegers; 0 1

  9⍴r , dokuz uzunluğa kadar eshape; 0 1 0 1 0 1 0 1 0

  r/⍨r'yi  filtrelemek için kullanın (bu sadece dikgen komşuları alır)

  4∊ dördü bunun bir üyesi mi? (yani gelecek nesilde beş olacak mı?)

  1+ bir tane ekle; 1, eğer yakalanmadıysa veya 2, yakalandıysa

 else (yani mevcut değer 0 veya ≥ 2'dir)

  ×cc  işareti

  c+c artı bununla (yani yanıyorsa bir artış)

  10⌊ en az on ve bu (kül yanmaz gibi)


* Dyalog Classic’te ⎕U233A bunun yerine kullanılır .


Küçük, fakat tahta değişiklikleriyle ilgilenmiyor. 3x3'e sıkışmış.
Suamere

@ Suamere Ne? Kartın boyutu değişmiyor, değil mi?
Adám

Üzgünüm, net değildim. Cevabınız harika, ancak çözümün "sağda" boşluklar olabilecek ya da bulunamayan değişken büyüklükteki bir panele izin vermesi gerektiğinin farkındayım. Ortadaki boşlukların ele alınması gerekli değildir. "Sağda", en sağdaki alt parçanın eksik olması dışında, 15 boyutlu bir panonun 4x4 olarak inşa edileceği anlamına geliyor. Ve 8-büyüklükteki bir tahta 3x3 olarak inşa edilecek, en sağdaki alt parça eksik, vs. hariç. Zorluk şartlarını böyle okudum. Cevabınız şu anda en kısa, ancak sadece 3x3 ile çalışır.
Suamere

@Suamere OP, girişin 2B olduğunu açıkça belirtir. Sayısal bir matris olarak girdi alıyorum ve her yerde sıfır şeklinde "boş" alanlara izin veriyorum. Girişin minimum 3 × 3 olmasını zorunlu tutarken ( OP buna izin veriyor ) Daha büyük boyutta bir giriş kabul ediyorum. Aslında, buraya tıklarsanız, ikinci örnek vakamın sağ alt hücre boşken 2 × 3 olduğunu göreceksiniz.
Adám

Yakaladım. Neden olduğundan emin değil, ancak Burada Deneyin bağlantısının sorunları var (Muhtemelen benim hatam), ancak yeni biçimlendirilmiş bağlantınız iyi çalışıyor. EG: fire '0A000\n0A0A0\n0A0A0\n000A1'biçimlendirilmiş olan üzerinde mükemmel çalışıyor, ancak ilk bağlantıyla çalışmak için bir eşdeğer elde edemiyorum. Muhtemelen yanlış bir şey yapıyorum. Bu benim için işe yaramıyor:f ↑(0 0 0)(0 1 0)(0 0 0)
Suamere

15

Python 3 , 232 bayt

def f(j):
 k=[[int(min(9,j[x][y]+(j[x][y]>0)or 3in(lambda k,x,y:[k[i][j]for i,j in[[x-1,y],[x+1,y],[x,y-1],[x,y+1]]if(-1<i<len(k))and(-1<j<len(k[i]))])(j,x,y)))for y in range(len(j[x]))]for x in range(len(j))]
 if k!=j:print(k);f(k)

Çevrimiçi deneyin!

-3 içine diğer lambda birleştirerek officialaimm sayesinde bayt f(görünüyor dağınık ama bayt kaydeder ve bu önemsediğimiz hepsi)
-8 Sn Xoder sayesinde bayt
OVS sayesinde bayt -26
-6 ppperry sayesinde bayt


Örnekte olduğu gibi nasıl bir boşluk eklerim?
tuskiomi

10

JavaScript (ES6), 217 210 207 204 193 192 190 bayt

Kaydedilen 2 kullanmanın Shaggy önerisine @ sayesinde bayt 9olarak A.

f=F=>[F,...(t=[],y=0,g=x=>(r=F[y])?(x||(t[y]=[]),r[x]+1)?(t[y][x]=r[x]<8?r[x]+(r[x]>0|[r[x-1],r[x+1],F[y-1]&&F[y-1][x],F[y+1]&&F[y+1][x]].includes(3)):9,g(x+1)):g(0,y++):t)(0)+""!=F?f(t):[]]

// test code
test=s=>{
  var test = document.querySelector("#in").value.split`\n`.map(e => Array.from(e).map(e => parseInt(e)));
  var out = f(test);
  document.querySelector("#out").innerHTML = out.map(e => e.map(e => e.join``).join`\n`).join`\n\n`;
};window.addEventListener("load",test);
<textarea id="in" oninput="test()">0301&#10;0009&#10;555</textarea><pre id="out"></pre>

Kullanımları 9yerine A. 2B tamsayı dizisi olarak giriş yapın. Bu tür dizilerin bir dizisi olarak çıktı.


Eğer kullanarak şeyi kaydetmek Could 9yerine A?
Shaggy,

7

Dünyayı Simüle Etme (Emoji'de) , 1407 bayt?

Bir programlama dili olarak keşfedilebilir bir açıklama kullanmayı sevmiyor musunuz ? Bunun dezavantajı genellikle çok iyi tanımlanmış bir program olmamasıdır, bu yüzden bu durumda dışa aktardığı JSON kullanıyorum. (Daha iyi bir fikriniz varsa bana bildirin)

{"meta":{"description":"","draw":1,"fps":1,"play":true},"states":[{"id":0,"icon":"0","name":"","actions":[{"sign":">=","num":1,"stateID":"4","actions":[{"stateID":"1","type":"go_to_state"}],"type":"if_neighbor"}],"description":""},{"id":1,"icon":"1","name":"","description":"","actions":[{"stateID":"2","type":"go_to_state"}]},{"id":2,"icon":"2","name":"","description":"","actions":[{"stateID":"3","type":"go_to_state"}]},{"id":3,"icon":"3","name":"","description":"","actions":[{"stateID":"4","type":"go_to_state"}]},{"id":4,"icon":"4","name":"","description":"","actions":[{"stateID":"5","type":"go_to_state"}]},{"id":5,"icon":"5","name":"","description":"","actions":[{"stateID":"6","type":"go_to_state"}]},{"id":6,"icon":"6","name":"","description":"","actions":[{"stateID":"7","type":"go_to_state"}]},{"id":7,"icon":"7","name":"","description":"","actions":[{"stateID":"8","type":"go_to_state"}]},{"id":8,"icon":"8","name":"","description":"","actions":[{"stateID":"9","type":"go_to_state"}]},{"id":9,"icon":"A","name":"","description":"","actions":[]}],"world":{"update":"simultaneous","neighborhood":"neumann","proportions":[{"stateID":0,"parts":100},{"stateID":1,"parts":0},{"stateID":2,"parts":0},{"stateID":3,"parts":0},{"stateID":4,"parts":0},{"stateID":5,"parts":0},{"stateID":6,"parts":0},{"stateID":7,"parts":0},{"stateID":8,"parts":0},{"stateID":9,"parts":0}],"size":{"width":9,"height":9}}}

Burada ya da burada deneyin :

<iframe width="100%" height="450" src="http://ncase.me/simulating/model/?remote=-Kr2X939XcFwKAunEaMK" frameborder="0"></iframe>


6

Retina , 103 96 88 bayt

^
¶
;{:`

T`0d`d
(?<=¶(.)*)0(?=4|.*¶(?<-1>.)*(?(1)_)4|(?<=40|¶(?(1)_)(?<-1>.)*4.*¶.*))
1

Çevrimiçi deneyin! 9Kül için kullanır ; bu 4 bayt kullanarak değiştirilebilir T`1-8`2-8A. Düzenleme: @ Martininder sayesinde 6 bayt kaydedildi. Açıklama:

^
¶

Çıktıların birbirine karışmaması için bir ayırıcı ekleyin. (Ayrıca, aşağıdaki eşleşmelerde yardımcı olur.)

;{:`

Son durumu yazdırmayın (bu, daha önce yazdırılmış olan önceki durumla aynı). Geçiş durumu değiştirene kadar tekrarlayın. Her geçişten önce mevcut durumu yazdır.

T`0d`d

Tüm ateşin yoğunluğunu arttırın.

(?<=¶(.)*)0(?=4|.*¶(?<-1>.)*(?(1)_)4|(?<=40|¶(?(1)_)(?<-1>.)*4.*¶.*))
1

Işıkla aydınlatılmamış alanlar uygun şekilde. Alt açıklama:

(?<=¶(.)*)

Bu ışıksız alanın sütun sayısını ölçün.

0

Işıksız alanı eşleştirin.

(?=4

Sağa uygun bir alan arayın.

  |.*¶(?<-1>.)*(?(1)_)4

Aşağıdaki satırda aynı sütunda (bir dengeleme grubu kullanarak) uygun bir alan arayın. Girişin dikdörtgen şeklinde garanti edilmesi durumunda, bunun |.*¶(?>(?<-1>.)*)43 baytlık bir tasarruf için basitleştirilebileceğini unutmayın .

  |(?<=40

Sola uygun bir alan arayın. (Alanın sağ tarafına baktığımızdan, aynı zamanda aydınlatılmış alanı da görürüz.)

      |¶(?(1)_)(?<-1>.)*4.*¶.*))

Yukarıdaki satırda aynı sütunda uygun bir alan arayın. Bu bir seyir ve bu nedenle sağdan sola bir eşleşme olduğu için dengeleme grubu koşulu, dengeleme grubu tarafından eşleştirilen sütunların önünde görünmelidir.


5

Perl 5 , 365 bayt

@a=map{[/./g]}<>;do{say@$_ for@a;say;my@n=();for$r(0..$#a){$l=$#{$a[$r]};for(0..$l){$t=$a[$r][$_];$n[$r][$_]=($q=$n[$r][$_])>$t?$q:$t==9?9:$t?++$t:0;if($t==4){$n[$r-1][$_]||=1if$r&&$_<$#{$a[$r-1]};$n[$r+1][$_]||=1if$r<$#a&&$_<$#{$a[$r+1]};$n[$r][$_-1]||=1if$_;$n[$r][$_+1]||=1if$_<$l}}}$d=0;for$r(0..$#a){$d||=$a[$r][$_]!=$n[$r++][$_]for 0..$#{$a[$r]}}@a=@n}while$d

Çevrimiçi deneyin!

Yanmış bir yeri belirtmek için 'A' yerine '9' kullanır.

Açıklaması

@a=map{[/./g]}<>;   # split input into a 2-D array

do{
say@$_ for@a;say;   # output the current state
my@n=();            # holds the next iteration as it's created
for$r(0..$#a){      # loop through rows
  $l=$#{$a[$r]};    # holder for the length of this row
  for(0..$l){
    $t=$a[$r][$_];  # temporary holder for current value
    $n[$r][$_]=($q=$n[$r][$_])>$t?$q:$t==9?9:$t?++$t:0; #update next iteration
    if($t==4){      # ignite the surrounding area if appropriate
      $n[$r-1][$_]||=1if$r&&$_<$#{$a[$r-1]};
      $n[$r+1][$_]||=1if$r<$#a&&$_<$#{$a[$r+1]};
      $n[$r][$_-1]||=1if$_;
      $n[$r][$_+1]||=1if$_<$l
    }
  }
}
$d=0;              # determine if this generation is different than the previous
for$r(0..$#a){$d||=$a[$r][$_]!=$n[$r++][$_]for 0..$#{$a[$r]}}
@a=@n              # replace master with new generation
}while$d

4

Haskell , 162 bayt

import Data.List
i x|x<'9'=succ x|1<2=x
f('3':'@':r)="30"++f r
f(x:r)=x:f r
f e=e
a%b=a.b.a.b
g=map(i<$>).(transpose%map(reverse%f))
h x|y<-g x,y/=x=x:h y|1<3=[x]

Çevrimiçi deneyin! Kullanım: hbir alanı satır listesi olarak alır ve alan listesini döndürür. Bir yanmamış alanı ile belirtilir @ve kül ile 9, farklı yangın basamaklıdır 1için 8.

  • f Yanmamış tüm parçaları değiştirerek yangının soldan sağa yayılmasını yönetir @ bir yanma 3alanına doğru olan alanları0 .
  • i her basamaktan daha küçük olduğu sürece 9 .
  • gfher satıra uygulanır , sonra satır tersine çevrilir, uygulanırf tekrar ve geri çevrilir. Daha sonra satırların listesi her satırda tekrar iletilir ve bunun tersi fuygulanır.
  • hgartık değişmeyen ve sonuçları toplayana kadar girdi için geçerlidir .

"" @ 3 @ 1 \ n @@@ 9 \ n555 @@@@@@@@@@@@@@@@@@@ "girişinde başarısız olur, nedense, uzun s. birinci tekrarlanmasından sonra üst çizgi, bu harika olurdu sayesinde sabitleme.!
Gryphon - Eski Monica

@Gryphon Deplasman, karakter matrisinin transpozisyonundan kaynaklanır. Eğer diğer çizgiler, ne tarla, ateş veya külü temsil etmeyen bir karakterle aynı uzunluğa getirilirse işe yarar _. Eğer bu kabul edilebilir değilse, korkarım cevabı silmek zorunda kalacağım, çünkü kullanımına odaklanmış transposeve tonlarca bayt tanıtmadan kolayca düzeltmenin bir yolunu göremiyorum.
Laikoni

4

C (gcc) , 308 305 299 297 295 291 bayt

#define F B[i][v]
m(A,B,k,y,m,U,i,v)char**B;{do{for(i=k=y=0;i<A;puts(""),++i)for(v=0;v<(m=strlen(B[i]));F=(U=F)>48&&F<56?F+1:F>55?65:(i+1<A&&B[i+1][v]==51||v+1<m&&B[i][v+1]==51||v-1>-1&&B[i][v-1]==52||i-1>-1&&B[i-1][v]==52)&&U<49?49:F,putchar(U),k+=U<49||U>64,++y,++v);puts("");}while(k-y);}

Bu program, bu giriş / çıkış varsayılanı tarafından izin verildiği şekilde uzunluğu önceden belirlenmiş bir dizi dizgeye işaretçi olan iki girdi alan bir işlevi tanımlar . Sondaki yeni satır ile STDOUT'a çıktı verir.

Çevrimiçi deneyin!


Sonsuza dek giriş üzerinde çalışır 80.
aschepler

@aschepler Üzgünüz! Tüm karakterlerin As'ye dönüşmesi gerektiğini varsaydım, ancak görünüşe göre yanlış kabul ettim. Neyse, bilgi için teşekkürler. Şimdi düzeltildi.
R. Kap,


@GiacomoGarabello Bu taktiği unuttuğuma inanamıyorum. Bana hatırlattığın için teşekkürler! :)
R. Kap

4

Octave, 72 69 bayt

a=input(''),do++a(a&a<9);a+=imdilate(a==4,~(z=-1:1)|~z')&~a,until a>8

Giriş, 2B sayı dizisi ve ile işaretli boş noktalar olarak alınır Inf. 'A'ile değiştirildi 9. Ara sonuçlar (sayı dizisi olarak) örtük şekilde basılmıştır.

Çevrimiçi deneyin!

Açıklama:

Bir döngüde, imdilateateş yayılımını simüle etmek için görüntü paketindeki işlev (morfolojik görüntü dilasyonu) kullanılır.


1
Bu, her boyutta tahtalarla ve hatta bir sürü delikle çalışır. EG: [0 Inf 0 0 0;0 Inf 0 Inf 0;0 Inf 0 Inf 0;0 0 0 Inf 1]- Çok Güzel
Suamere

1

Python 2,325 Bayt

def f(x):
 while{i for m in x for i in m}>{9,''}:
    yield x;i=0
    for l in x:
     j=0
     for c in l:
        if 0<c<9:x[i][j]+=1
        j+=1
     i+=1
    i=0
    for l in x:
     j=0
     for c in l:
        if c==0 and{1}&{x[k[1]][k[2]]==4for k in[y for y in[[i,i-1,j],[i<len(x)-1,i+1,j],[j,i,j-1],[j<len(l)-1,i,j+1]]if y[0]]}:x[i][j]+=1
        j+=1
     i+=1
 yield x

fgirişi 2 boyutlu bir tamsayı dizisi ve ile işaretli boş noktaları alır ''. 'A'ile değiştirildi 9. İşlev, aynı alandaki zaman içindeki tüm alanların bir jeneratörünü verir.

Çevrimiçi deneyin!


1

Octave , 212 bayt

function r(f)b=48;f-=b;c=-16;l=f~=-c;d=17;p=@(x)disp(char(x+b));g=@()disp(' ');p(f);g();while~all(any(f(:)==[0 d c],2))m=f>0&l;f(m)+=1;k=conv2(f==4,[0 1 0;1 0 1;0 1 0],'same')&~m&l;f(k)+=1;f(f>8&l)=d;p(f);g();end

Çalıştırmak için şöyle bir karakter dizisi belirtin:

f = ['0301','000A','555 '];

... sonra yapın:

r(f)

İzlenecek kodun açıklaması ...

Çevrimiçi deneyin!

Not: Bu kodu tio.run ile çalıştırmayı denedim , ancak çıktı alamadım . Başka bir servis kullanmak zorunda kaldım.


Gerçekten tam o anda benden önce cevaplayacağınız bir oktav cevap göndermek istiyorum ..
Michthan

1

PHP, 226 212 210 209 185 177 bayt

for($f=file(m);$f!=$g;print"
")for($g=$f,$y=0;$r=$f[$y++];)for($x=-1;~$c=$r[++$x];$f[$y-1][$x]=$c=="0"?strstr($g[$y-2][$x].$r[$x-1].$f[$y][$x].$r[$x+1],51)/3:min(++$c,9))echo$c;

adlı bir dosyadan izleyen bir yeni satır ile girdi alır m;9küller için.

Çevrimiçi olarak çalıştırın -nrveya deneyin .


ilk yaklaşım: PHP 7.0, 209 bayt

for($f=$g=file(m);trim(join($f),"A
");print"
".join($f=$g))for($y=-1;(a&$c=$r[++$x])||$r=$f[$y-=$x=-1];)for(+$c&&$g[$y][$x]=++$c<9?$c:A,$a=4;$a--;$q=$p)$c-4|($w=&$g[$y+$p=[1,0,-1][$a]])[$q+=$x]!="0"||$w[$q]=1;

adlı bir dosyadan izleyen bir yeni satır ile girdi alır m.

Çevrimiçi olarak çalıştırın -nrveya deneyin .

PHP sürüm notları (eski yaklaşım için)

  • 7.0 yaşından büyük PHP, her şeyi yerine sonra $c-4|birlikte$g[$y+$p=[1,0,-1][$a]][$q+=$x]!="0"||$g[$y+$p][$q]=1;
  • 5.5 yaşından büyük PHP, yerini [1,0,-1][$a]ile$a%2*~-($a&2)
  • 7.0 daha yeni PHP, yerini a&$cile ""<$c, +$cbirlikte 0<$cve $c-4birlikte$c!=4

diğer test senaryoları
g19fanatic

@ G19fanatic sabit ve golf oynadı. fark ettiğiniz için teşekkürler.
Titus

0

Octave, 419 312 bayt

M=input('') %take a matrix M as input
[a, b]=size(M); %size M for later
while mean(mean(M))!=9 %while the whole matrix M isn't ashes
M=M+round(M.^0.001); %if there is a nonzero int add 1 to it
for i=1:a %loop over all values of M
for j=1:b
if(M(i,j)==4) %if a value of 4 is found, ignite the zeros around it
if(M(max(i-1,1),j)==0) M(i-1,j)++;end
if(M(min(i+1,a),j)==0) M(i+1,j)++;end
if(M(i,max(j-1,1))==0) M(i,j-1)++;end      
if(M(i,min(j+1,b))==0) M(i,j+1)++;end
elseif(M(i,j)==10) M(i,j)--;
end
end
end
M %display the matrix
end

Çevrimiçi deneyin!

Bu benim versiyonum işe yarıyor, bu yüzden şimdi hala golf oynamaya ihtiyacım var. Bir matris içinde 4 endeksini bulmanın bir yolunu bulursam daha kısa olabileceğini düşünüyorum, ama nasıl olduğunu bilmiyorum.
Not: Kodumda A 9.


2
Bunun yerine endif endforve endwhileyazabilirsinizend
rahnema1

0

Şablon ( mod) , 22 bayt

S8:'A'0::S⋄(3N)⌈S+s

Çevrimiçi deneyin!

Sadece test girişi gibi, kullanım tamsayılardır için boşluklarla ayrılmış 0- 8, ' 'boş ve 'A'için A. Sonunda boşluk bırakmayı da unutmayın.

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.