Compare commits
2 Commits
e64178d263
...
73fd80dfb6
Author | SHA1 | Date |
---|---|---|
sejo | 73fd80dfb6 | |
sejo | 935860d8b1 |
|
@ -0,0 +1,52 @@
|
|||
BEGIN {
|
||||
FS = ""
|
||||
}
|
||||
{
|
||||
for(i=1;i<=NF;i++) o[NR,i] = $i
|
||||
}
|
||||
END{
|
||||
flashes = 0
|
||||
for(s=1;s<=100;s++){
|
||||
delete flashed; delete visited
|
||||
for(i in o) flashed[i] = 0
|
||||
|
||||
for(i in o){
|
||||
o[i]++
|
||||
if(!flashed[i] && o[i]>9) flashed[i] = 1
|
||||
}
|
||||
do{
|
||||
for(y=1;y<=NR;y++){
|
||||
for(x=1;x<=NF;x++){
|
||||
if(!visited[y,x] && flashed[y,x]){
|
||||
if(y>1 && x>1){ o[y-1,x-1]++; flashed[y-1,x-1]=o[y-1,x-1]>9; }
|
||||
if(y>1 && x<NF){ o[y-1,x+1]++; flashed[y-1,x+1]=o[y-1,x+1]>9; }
|
||||
if(y>1){ o[y-1,x]++; flashed[y-1,x]=o[y-1,x]>9;}
|
||||
if(x>1){ o[y,x-1]++; flashed[y,x-1]=o[y,x-1]>9; }
|
||||
if(x<NF){ o[y,x+1]++; flashed[y,x+1]=o[y,x+1]>9; }
|
||||
if(y<NR && x>1){ o[y+1,x-1]++; flashed[y+1,x-1]=o[y+1,x-1]>9; }
|
||||
if(y<NR && x<NF){ o[y+1,x+1]++; flashed[y+1,x+1]=o[y+1,x+1]>9; }
|
||||
if(y<NR){ o[y+1,x]++; flashed[y+1,x]=o[y+1,x]>9; }
|
||||
visited[y,x] = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
tochange=0
|
||||
for(i in flashed) tochange+=flashed[i]!=visited[i]
|
||||
} while(tochange)
|
||||
print "after step", s
|
||||
for(y=1;y<=NR;y++){
|
||||
for(x=1;x<=NF;x++){
|
||||
# printf "%d:%d\t", o[y,x], flashed[y,x]
|
||||
printf "%d",flashed[y,x]
|
||||
}
|
||||
print ""
|
||||
}
|
||||
for(i in flashed ){
|
||||
flashes += flashed[i]>0
|
||||
if( flashed[i] ) o[i] = 0
|
||||
}
|
||||
print "---", flashes
|
||||
}
|
||||
|
||||
print ""
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
BEGIN {
|
||||
FS = ""
|
||||
}
|
||||
{
|
||||
for(i=1;i<=NF;i++) o[NR,i] = $i
|
||||
}
|
||||
END{
|
||||
print NF,NR
|
||||
s=1
|
||||
while(nflashes!=NF*NR){
|
||||
nflashes = 0
|
||||
delete flashed; delete visited
|
||||
for(i in o) flashed[i] = 0
|
||||
|
||||
for(i in o){
|
||||
o[i]++
|
||||
if(!flashed[i] && o[i]>9) flashed[i] = 1
|
||||
}
|
||||
do{
|
||||
for(y=1;y<=NR;y++){
|
||||
for(x=1;x<=NF;x++){
|
||||
if(!visited[y,x] && flashed[y,x]){
|
||||
if(y>1 && x>1){ o[y-1,x-1]++; flashed[y-1,x-1]=o[y-1,x-1]>9; }
|
||||
if(y>1 && x<NF){ o[y-1,x+1]++; flashed[y-1,x+1]=o[y-1,x+1]>9; }
|
||||
if(y>1){ o[y-1,x]++; flashed[y-1,x]=o[y-1,x]>9;}
|
||||
if(x>1){ o[y,x-1]++; flashed[y,x-1]=o[y,x-1]>9; }
|
||||
if(x<NF){ o[y,x+1]++; flashed[y,x+1]=o[y,x+1]>9; }
|
||||
if(y<NR && x>1){ o[y+1,x-1]++; flashed[y+1,x-1]=o[y+1,x-1]>9; }
|
||||
if(y<NR && x<NF){ o[y+1,x+1]++; flashed[y+1,x+1]=o[y+1,x+1]>9; }
|
||||
if(y<NR){ o[y+1,x]++; flashed[y+1,x]=o[y+1,x]>9; }
|
||||
visited[y,x] = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
tochange=0
|
||||
for(i in flashed) tochange+=flashed[i]!=visited[i]
|
||||
} while(tochange)
|
||||
|
||||
for(i in flashed ){
|
||||
nflashes += flashed[i]>0
|
||||
if( flashed[i] ) o[i] = 0
|
||||
}
|
||||
print "step", s++, ":", nflashes
|
||||
}
|
||||
|
||||
print ""
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
1t:
|
||||
awk -f 11.awk test
|
||||
|
||||
1i:
|
||||
awk -f 11.awk input
|
||||
|
||||
2t:
|
||||
awk -f 11_2.awk test
|
||||
|
||||
2i:
|
||||
awk -f 11_2.awk input
|
||||
|
||||
paste:
|
||||
xclip -sel c -o > test
|
Loading…
Reference in New Issue