Maze solving: Difference between revisions
Content added Content deleted
Line 1,434: | Line 1,434: | ||
=={{header|EasyLang}}== |
=={{header|EasyLang}}== |
||
[https://easylang.dev/show/#cod=fVTbbtswDH3XVxDoSy6oK6UOkABrfyQwBjeWEyGxFMhZuu7rR+ourFgeYvNQFMnDQz/B1P+RcJJa2v6ujIZeDzCb60PpE3sCNit0v4HYMo2PDazAIWsQbCScc3iBhYZn4M12ya5Sw3ToQONBTfEf/fFysuYX3so5ZzdrjjCfzedPl7eBhgHA8Sp7Sy+jsaDoWrgbCHcRjj81oqE6dPKA4O83mguFycUSJjNgyuT6KlyDepSuo7linv1+n6HJPCTetoIRI0ZsaYMXFFY+aeXxjtgKRLONz+B1vbi/+SrlDRnhgjXMjON8oMIP2BcyJWDxrJfQeTImz8TNzJGN6YBGajSRRcaQ7tnAK7TQlaS1MJhPjcSJUM+AoMV5mglUhJRF0FU0HIYukkvviA9IcEk3FbWmmM7NhKQRQVJCdBQ01iHFpIo2U3BNW8OkHsj/5tVDowsU9RdZ6eU/MgkaEWkU1Vldn9okkzJ+B2ERmsT+r0sHV45y6c5hSwLvYhuOUUiFs0zK2U/dt+95a1hqmmUF4D4FQuzFUYlKjpy4VSCsXoavCk6L4FcA/13qLP61k3sbxB8sF6AsbqmzX1HwTdhk/FBIGiUPAh7dpnsZxyL3nFc74VpHfflZ+64DtT48S+rDyv5SDNOMWdKtEwj4CZ/jhNtK6Isz9mBGx4dIPsxHHzOvRb8LqNcsfIr98e7bSprXbjDOjlUW8vZELChyHflv6dUncxH5NOb45g7InGnY7XaVJ7FXwA0rnrRA/pBgvhruhLcJyf8C Run it] |
|||
[https://easylang.dev/show/#cod=fVTbbtswDH3XVxDoSy6oJ6UOkADrfiQwBteWGyG2FMhZuu7rR+pmKSuWh9gixdvhOX6Cqf0j4V1qadubMhpa3cNsxrvS7+wJ2KzQ/QpizzQ+drABZ9mCYAPZOYdvsNLwDLzar9koNUynBjRe1BT/1naXd2t+YVbOObta08F8Nh8/Xd0KKgYA3ShbSy+DsaAoLdwMhFxkx58a8KAadPJgwd9vPK4UFhdrmEyPJZPrM3P16p67OjNinePxuJgmc5eYbQMDRgw40g4TZKflppXdDW0bENU+PoPXzeL+5lHKKyLCBauYGYb5RI2fcC5ESsDqWa+h8WBMHomrmSMa0wkPadCuHccFMbL0KdkOXqCGJkeuht58aERPhKZ6NFpcqplARZOyaHRt9ae+iQjTO9p7RDnHnDrbUkzjFkP8iEaiQ3RkWJYh2brcLNnAKUMJYMWk7sn/6nlESwxgtRdZMOc/hAlsEWkpxV1d3tqlI1X8yoRNaKL9vy4dXEuUK3cOegngi324RiGFPW05IHP2JPAYeAQr5i/E8dkDK1BoAR97ccgixSNETiNkK1XyWZiTQrw28N81sahi63RQB1WEkwtQFuXrzi+ohCpIHL8gkjbLA7MH9wmollljp0fOC8U4OJB4fv8ehAC3z7Fw7c3K9pIt2AwL12tHGvBbP8et14UCVmccxAwOFJF8WI8+dZ6fXiRI5EURFPv9h58tiUG7Pblz7PKR9x6SFYVv4yZqevUVXdgSgoW+SAQP6Gk4HA6FO+GYmSuWPUle/pJgWV/ccXMX2vgL Run it] |
|||
<syntaxhighlight lang="text"> |
<syntaxhighlight lang="text"> |
||
# maze generation and solving |
|||
# |
|||
size = 15 |
size = 15 |
||
n = 2 * size + 1 |
n = 2 * size + 1 |
||
Line 1,459: | Line 1,461: | ||
proc m_maze pos . . |
proc m_maze pos . . |
||
m[pos] = 0 |
m[pos] = 0 |
||
show_maze |
|||
d[] = [ 1 2 3 4 ] |
d[] = [ 1 2 3 4 ] |
||
for i = 4 downto 1 |
for i = 4 downto 1 |
||
Line 1,467: | Line 1,469: | ||
if m[pos + dir] = 1 and m[pos + 2 * dir] = 1 |
if m[pos + dir] = 1 and m[pos + 2 * dir] = 1 |
||
m[pos + dir] = 0 |
m[pos + dir] = 0 |
||
m_maze pos + 2 * dir |
|||
. |
. |
||
. |
. |
||
Line 1,483: | Line 1,485: | ||
. |
. |
||
h = 2 * random 15 - n + n * 2 * random 15 |
h = 2 * random 15 - n + n * 2 * random 15 |
||
m_maze h |
|||
m[endpos] = 0 |
m[endpos] = 0 |
||
. |
. |
||
make_maze |
|||
show_maze |
|||
# |
# |
||
proc mark pos col . . |
proc mark pos col . . |
||
Line 1,497: | Line 1,499: | ||
. |
. |
||
proc solve dir0 pos . found . |
proc solve dir0 pos . found . |
||
mark pos 900 |
|||
sleep 0.05 |
sleep 0.05 |
||
if pos = endpos |
if pos = endpos |
||
Line 1,508: | Line 1,510: | ||
posn = pos + offs[dir] |
posn = pos + offs[dir] |
||
if dir <> dir0 and m[posn] = 0 and found = 0 |
if dir <> dir0 and m[posn] = 0 and found = 0 |
||
solve (dir + 1) mod 4 + 1 posn found |
|||
if found = 0 |
if found = 0 |
||
mark posn 888 |
|||
sleep 0.08 |
sleep 0.08 |
||
. |
. |
||
Line 1,517: | Line 1,519: | ||
. |
. |
||
sleep 1 |
sleep 1 |
||
solve 0 n + 2 found |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||