結果
問題 | No.228 ゆきこちゃんの 15 パズル |
ユーザー |
![]() |
提出日時 | 2017-01-08 05:43:08 |
言語 | Fortran (gFortran 14.2.0) |
結果 |
AC
|
実行時間 | 1 ms / 5,000 ms |
コード長 | 1,157 bytes |
コンパイル時間 | 460 ms |
コンパイル使用メモリ | 32,384 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-12-17 17:56:39 |
合計ジャッジ時間 | 1,343 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
program main implicit none integer::p(0:5,0:5) integer::i,x,y,move data p/36*-1/ do i=1,4 read *,p(i,1:4) end do ! find zero do x=1,4 do y=1,4 if(p(x,y).eq.0) then goto 10 end if end do end do 10 continue ! move do move = MOD((x-1)*4+y,16) ! print *, x,y,move ! call printer(p) if(p(x-1,y).eq.move) then p(x,y) = move p(x-1,y) = 0 x = x-1 else if(p(x+1,y).eq.move) then p(x,y) = move p(x+1,y) = 0 x = x+1 else if(p(x,y-1).eq.move) then p(x,y) = move p(x,y-1) = 0 y = y-1 else if(p(x,y+1).eq.move) then p(x,y) = move p(x,y+1) = 0 y = y+1 else exit end if end do ! check do x=1,4 do y=1,4 if(p(x,y).eq.MOD((x-1)*4+y,16)) then continue else print '(a)',"No" return end if end do end do print '(a)',"Yes" return contains subroutine printer(p) integer::p(0:5,0:5) integer::x do x=1,4 print *,p(x,1:4) end do end subroutine printer end program main