fork download
  1. #!sapphire
  2.  
  3. def size 5;
  4.  
  5. def mat makeMat(size,size);
  6.  
  7. %配置を探索する。
  8. def search()
  9. combination(safe?,size,directProduct(size));
  10.  
  11. %n*nの直積をつくり行列の位置とする。
  12. def directProduct(n)
  13. let(i,0)(j,0)(ls,[]){
  14. for(i:=1,i<=n,i++)
  15. for(j:=1,j<=n,j++)
  16. ls := cons(list(i,j),ls),
  17. ls};
  18.  
  19. %リストからn個の組み合わせを作り関数fに渡す。
  20. def combination(f,n,ls){
  21. def comb(n,ls,a)
  22. if(n=0)
  23. f(reverse(a))
  24. else if(length(ls)=n)
  25. f(append(reverse(a),ls))
  26. else{
  27. comb(n-1,cdr(ls),cons(car(ls),a)),
  28. comb(n,cdr(ls),a)},
  29. if(n>length(ls))
  30. #f
  31. else
  32. comb(n,ls,[])
  33. };
  34.  
  35. %距離を記憶する場所
  36. def lengthLs [];
  37.  
  38. %直積でつくった位置の行列の要素を1とする。他は0。
  39. def writeBoard(ls){
  40. initBoard(),
  41. writeBoard1(ls)
  42. };
  43.  
  44. def writeBoard1(ls)
  45. if(null?(ls))
  46. #t
  47. else
  48. let(i,caar(ls))(j,cadar(ls)){
  49. mat[i,j] := 1,
  50. writeBoard1(cdr(ls))
  51. };
  52.  
  53. %行列の初期化
  54. def initBoard()
  55. let(i,0)(j,0)
  56. for(i:=1,i<=size,i++)
  57. for(j:=1,j<=size,j++)
  58. mat[i,j] := 0;
  59.  
  60. %その配置はセーフか?セーフなら表示する。
  61. def safe?(ls){
  62. lengthLs := [],
  63. writeBoard(ls),
  64. catch tag
  65. let(i,0)(j,0){
  66. for(i:=1,i<=size,i++)
  67. for(j:=1,j<=size,j++)
  68. when(mat[i,j]=1 && not(safe1?(i,j)))
  69. throw tag #f,
  70. print(ls)}};
  71.  
  72.  
  73. def safe1?(x,y)
  74. catch tag{
  75. let(i,0)(j,0)
  76. for(i:=x,i<=size,i++)
  77. for(j:=y,j<=size,j++)
  78. when(mat[i,j]=1 && i!=x && j!=y && check(x,y,i,j))
  79. throw tag #f,
  80. #t};
  81.  
  82. %距離を計算しすでにあった距離かどうかを判定する。
  83. def check(x,y,i,j)
  84. let(d,norm(x,y,i,j))
  85. if(member(d,lengthLs))
  86. #t
  87. else{
  88. lengthLs := cons(d,lengthLs),
  89. #f};
  90.  
  91. %ユークリッド距離を計算
  92. def norm(x,y,i,j)
  93. sqrt(abs(x-i)^2+abs(y-j)^2);
  94.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#!sapphire
^
Main.java:1: error: class, interface, or enum expected
#!sapphire
  ^
Main.java:5: error: class, interface, or enum expected
def mat makeMat(size,size);
^
Main.java:7: error: class, interface, or enum expected
%????????
^
Main.java:7: error: illegal character: '\u3002'
%????????
        ^
Main.java:11: error: class, interface, or enum expected
%n*n????????????????
^
Main.java:11: error: illegal character: '\u3002'
%n*n????????????????
                   ^
Main.java:19: error: class, interface, or enum expected
%??????????????????f????
^
Main.java:19: error: illegal character: '\u3002'
%??????????????????f????
                       ^
Main.java:30: error: illegal character: '#'
    #f
    ^
Main.java:35: error: class, interface, or enum expected
%?????????
^
Main.java:38: error: class, interface, or enum expected
%?????????????????????????
^
Main.java:38: error: illegal character: '\u3002'
%?????????????????????????
                     ^
Main.java:38: error: illegal character: '\u3002'
%?????????????????????????
                         ^
Main.java:44: error: class, interface, or enum expected
def writeBoard1(ls)
^
Main.java:46: error: illegal character: '#'
    #t
    ^
Main.java:53: error: class, interface, or enum expected
%??????
^
Main.java:60: error: class, interface, or enum expected
%????????????????????
^
Main.java:60: error: illegal character: '\uff1f'
%????????????????????
          ^
Main.java:60: error: illegal character: '\u3002'
%????????????????????
                    ^
Main.java:69: error: illegal character: '#'
            throw tag #f,
                      ^
Main.java:73: error: class, interface, or enum expected
def safe1?(x,y)
^
Main.java:79: error: illegal character: '#'
          throw tag #f,
                    ^
Main.java:80: error: illegal character: '#'
  #t};
  ^
Main.java:82: error: class, interface, or enum expected
%????????????????????????
^
Main.java:82: error: illegal character: '\u3002'
%????????????????????????
                        ^
Main.java:86: error: illegal character: '#'
      #t
      ^
Main.java:89: error: illegal character: '#'
      #f};
      ^
Main.java:91: error: class, interface, or enum expected
%???????????
^
29 errors
stdout
Standard output is empty