piece(beacon) do
  anchor(0, -1)
  {
    do anchor(-1, 0) while
    friendly(0, 0) jne(0)
    piece-on(pawn, 0, 0) jmp(0)
    piece-on(beacon, 0, 0) jmp(0)
    shift(0, 0) label(0)
    do
      friendly(1, 0) jne(2)
      piece-on(pawn, 1, 0) jmp(2)
      piece-on(beacon, 1, 0) jmp(2)
      shift(1, 0) jmp(1) label(2)
      anchor(1, 0)
      label(1)
    while
  }
while;

piece(beacon) do
  {
    do anchor(-1, 0) while
    friendly(0, 0) jne(0)
    piece-on(pawn, 0, 0) jmp(0)
    piece-on(beacon, 0, 0) jmp(0)
    shift(0, 0) label(0)
    do
      friendly(1, 0) jne(2)
      piece-on(pawn, 1, 0) jmp(2)
      piece-on(beacon, 1, 0) jmp(2)
      shift(1, 0) jmp(1) label(2)
      anchor(1, 0)
      label(1)
    while
  }
  anchor(0, 1)
while;

beacon은 아군 기물이 어디에 있든 자리를 바꿀 수 있어야 하기 때문에 체스판 전체를 탐색해야 합니다.