fork download
  1. #!/usr/bin/perl
  2. use 5.016;
  3. use warnings;
  4.  
  5. my @board = ([0]);
  6.  
  7. sub check_on_board {
  8. (
  9. ($_[0] >= 0) and ($_[1] >= 0) and
  10. ($_[0] < 8) and ($_[1] < 8) and
  11. (not defined $board[$_[1]]->[$_[0]])
  12. ) or return;
  13.  
  14. $board[$_[1]]->[$_[0]] = $_[2];
  15.  
  16. return 1;
  17. }
  18.  
  19. sub f {
  20. my @queue = ([0, 0, 0]);
  21.  
  22. while(@queue){
  23. my ($x, $y, $n) = @{shift @queue};
  24.  
  25. foreach(
  26. [-2, -1], [-2, 1],
  27. [-1, -2], [ 1, -2],
  28. [ 2, -1], [ 2, 1],
  29. [-1, 2], [ 1, 2],
  30. ){
  31. if (check_on_board($x + $_->[0], $y + $_->[1], $n + 1)){
  32. push @queue, [$x + $_->[0], $y + $_->[1], $n + 1];
  33. }
  34. }
  35. }
  36. }
  37.  
  38. f();
  39.  
  40. foreach(@board){
  41. say @{$_};
  42. }
  43.  
Success #stdin #stdout 0s 3736KB
stdin
Standard input is empty
stdout
03232345
34123434
21432345
32323434
23234345
34343454
43434545
54545456