Post History
Perl 5, 121 bytes Reads a string from stdin. Exits 0 if valid tour, 1 if invalid. perl -ne'map{$h=~y/7-^/<-c/;$h.=q|A8>HL B79?IKM C8:<@FJLN D9;=GMO E:>HN |}1..5;map{exit(1)if$p&&a...
#7: Post edited
# [Perl 5], 124 bytes- Reads a string from stdin. Exits 0 if valid tour, 1 if invalid.
- ```
perl -ne'map{$h=~y/7-^/<-c/;$h.=q|A8>HL,B79?IKM,C8:<@FJLN,D9;=GMO,E:>HN,|}1..5;map{exit(1)if$p&&$h!~"$_\[^,]*$p";$p=$_}/./g'- ```
- ```
- echo 'ALURYNEHSVKBITWPGDOXQFCJM' | perl -ne'
- # extend board:
- # 789:;
- # <=>?@
- # ABCDE
- # FGHIJ
- # KLMNO
- # PQRST
- # UVWXY
- # Z[\]^
- # _`abc
- # using ABCDE row as examplar, encode lookup data as
# comma-terminated list of move followed by valid- # previous positions
- # generate string containing data for all five rows
- # by repeatedly translating ascii+5
- map {
- $h =~ y/7-^/<-c/;
$h .= q|A8>HL,B79?IKM,C8:<@FJLN,D9;=GMO,E:>HN,|- } 1..5;
- # walk the moves
- map {
- # after first move, do regex match to check if
- # the actual previous position of current move
- # is present in the lookup data and abort if not
exit(1) if $p && $h !~ "$_\[^,]*$p";- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
[Try it online!][TIO-mpo1o19m]- [Perl 5]: https://www.perl.org/
[TIO-mpo1o19m]: https://tio.run/##dZDpbtQwFIX/@ylMMN2URRVUbcfNQPZ9XyYRpaOhZJqR2iTEGQnUTh@dwSkiAiT@@fp@/nSOu6q/P9u/hkNFBliv@qYiBGxJBcn2M4GH1bfNcIgBHeB4hI8Q9SKzXt2T6rphMLxrhxZ@aZsK7sC4GfrtywLc1u1Dh0HXb5phDZk33Nt3BHJzyLBoSX0C5E8EAe8fVt0jqsXn78I5dyNccbcCRjUvfn2SLuamy8rnl@8tx2OVi9nVB912fVa9xKLhBaw2m5s@@7Q75fkzDEbNmO/o9HizRt3BAapfPTNoef3xhv10gjoGo05Ey53AC3fw37YYjAVmv7LSfhhQ@Oh479mKHhWBaoSL1JKdPDE1v4wzV4IzOPYEkpvFpa@ZSe7IVroIDTUoIl2xvd/AX6/@1FHg5Q/BfwSSOxGuJdvhwlf0lKqkIIsN1Sui0tEmwtdVI6YXZlSEtuLSsBRLck@eiDgwnVxNLTdTSt8I5cKzE20hRfpEmHR0E7uQnThQcz3yldJKvdDIJuJH2w2btiF7rvkJ "Perl 5 – Try It Online"
- # [Perl 5], 121 bytes
- Reads a string from stdin. Exits 0 if valid tour, 1 if invalid.
- ```
- perl -ne'map{$h=~y/7-^/<-c/;$h.=q|A8>HL B79?IKM C8:<@FJLN D9;=GMO E:>HN |}1..5;map{exit(1)if$p&&$h!~/$_\S*$p/;$p=$_}/./g'
- ```
- ```
- echo 'ALURYNEHSVKBITWPGDOXQFCJM' | perl -ne'
- # extend board:
- # 789:;
- # <=>?@
- # ABCDE
- # FGHIJ
- # KLMNO
- # PQRST
- # UVWXY
- # Z[\]^
- # _`abc
- # using ABCDE row as examplar, encode lookup data as
- # space-terminated list of move followed by valid
- # previous positions
- # generate string containing data for all five rows
- # by repeatedly translating ascii+5
- map {
- $h =~ y/7-^/<-c/;
- $h .= q|A8>HL B79?IKM C8:<@FJLN D9;=GMO E:>HN |
- } 1..5;
- # walk the moves
- map {
- # after first move, do regex match to check if
- # the actual previous position of current move
- # is present in the lookup data and abort if not
- exit(1) if $p && $h !~ /$_\S*$p/;
- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
- [Try it online!][TIO-mpo65pht]
- [Perl 5]: https://www.perl.org/
- [TIO-mpo65pht]: https://tio.run/##dZDpTttAFIX/z1PcBpdNtS1UEBDjtN638b7EllCjlDo4Etiux5FaQXh00jEVFq3Ev7lzv/l0zrRld3e224O@JD1Uy64uCUEbUgLZfCdwUP5a9wcCogMMR3gAphMnq@UdKa/riQC3Td/Aj6YuYYuGTd9tXhbopmruWwG13bruVzD5yH4@JcDOYPKJWVAfD9wxzwu7@2X7wFTi02/@nP3GX7E3vMBUnPjzUbqYmRjk88svluOCcjG9@qrb2AP1UhAN1wdtOjM9eNyecNyZgAbNkO/w5Gi9Ytr9fab68MQzi@v4mGmpshWZxZbn@Nv/mwpoCD/9m5N2ExBlD492rq3oYe6rRjBPLNnJYlPziijFEkxh6IgknEaFp5lx5shWMg8M1c9DXbHdV@CfV291FHj5P/SOQMIjgS3ZDuaeoidUJflpZKhuHhaONhKerhoRvTDDPLAVTMNSLM5ceSQi33QyNbFwqhSeEci5a8faXAr1kTDpiGM7l53IVzM99JTCStzASEfiuWn7dVOTHVv/AQ "Perl 5 – Try It Online"
#6: Post edited
# [Perl 5], 130 bytes- Reads a string from stdin. Exits 0 if valid tour, 1 if invalid.
- ```
perl -ne'map{$h=~y/a-y7-Y/f-~<-Y./;$h.=q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|}1..5;map{exit(1)if$p&&$h!~(lc."[^a-z]*$p");$p=$_}/./g'- ```
- ```
- echo 'ALURYNEHSVKBITWPGDOXQFCJM' | perl -ne'
# extend board upward:- # 789:;
- # <=>?@
- # ABCDE
- # FGHIJ
- # KLMNO
- # PQRST
- # UVWXY
# using ABCDE row as examplar, encode lookup data as lowercase# move followed by "uppercase" valid previous positions# generate a lookup string containing data for all five rows- # by repeatedly translating ascii+5
# to avoid running into the lowercase ascii letter range,# everything above "Y" is just translated to "."- map {
$h =~ y/a-y7-Y/f-~<-Y./;$h .= q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|- } 1..5;
- # walk the moves
- map {
# after first move, check if actual previous position# of current move is present in the lookup data# and abort if notexit(1) if $p && $h!~(lc."[^a-z]*$p");- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
[Try it online!][TIO-mpo06zyg]- [Perl 5]: https://www.perl.org/
[TIO-mpo06zyg]: https://tio.run/##dZDpTttAFIX/z1NMjQsJqm0hQEAGp/US7/sWW12QCQ6OFGzjcaRSSB696ZiqVqnUf3PnfvPpnGmKdn2@P4BdgTtY5m1VYAw2uIB4c4vhUfF91R0hQAbYH@EzpFueWuZrXHypKATv666Gd3VVwC3oN127eV2ARVk/NAg07arqlpB6z5yeYchMIfWBviE@DrLHHIf2D3nzTJf87onLmacLJuOWzO6ayVgO0SXLP77kl1PNur24@qib9uJycv1JMSzn7grxqu0Wk6nmvGxPWPYcgV7UJxydjFdLujk8pMt3u9F6wVKfv@XMj6/HdEONEd3w9M2WY7n7fysj0LeY/A5MSiJA2NF4bxuS4qeurHrzSBfNJNRmThbElgAnsC8LBCsOMmemhYkp6tHcU2U39RXJsP8Ab179rSPA60eC/wgEayAsXTS8uSMpEVEJbhyosp36mTkbCEeR1YBcaH7qGZJFwhIsTGxxIAJXMxM50q1YyhzVE1PbCGdzwVcGQiOjFRqpaAaunCi@I2V6ZHtqPBA/66Zb1RXeM9Uv "Perl 5 – Try It Online"
- # [Perl 5], 124 bytes
- Reads a string from stdin. Exits 0 if valid tour, 1 if invalid.
- ```
- perl -ne'map{$h=~y/7-^/<-c/;$h.=q|A8>HL,B79?IKM,C8:<@FJLN,D9;=GMO,E:>HN,|}1..5;map{exit(1)if$p&&$h!~"$_\[^,]*$p";$p=$_}/./g'
- ```
- ```
- echo 'ALURYNEHSVKBITWPGDOXQFCJM' | perl -ne'
- # extend board:
- # 789:;
- # <=>?@
- # ABCDE
- # FGHIJ
- # KLMNO
- # PQRST
- # UVWXY
- # Z[\]^
- # _`abc
- # using ABCDE row as examplar, encode lookup data as
- # comma-terminated list of move followed by valid
- # previous positions
- # generate string containing data for all five rows
- # by repeatedly translating ascii+5
- map {
- $h =~ y/7-^/<-c/;
- $h .= q|A8>HL,B79?IKM,C8:<@FJLN,D9;=GMO,E:>HN,|
- } 1..5;
- # walk the moves
- map {
- # after first move, do regex match to check if
- # the actual previous position of current move
- # is present in the lookup data and abort if not
- exit(1) if $p && $h !~ "$_\[^,]*$p";
- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
- [Try it online!][TIO-mpo1o19m]
- [Perl 5]: https://www.perl.org/
- [TIO-mpo1o19m]: https://tio.run/##dZDpbtQwFIX/@ylMMN2URRVUbcfNQPZ9XyYRpaOhZJqR2iTEGQnUTh@dwSkiAiT@@fp@/nSOu6q/P9u/hkNFBliv@qYiBGxJBcn2M4GH1bfNcIgBHeB4hI8Q9SKzXt2T6rphMLxrhxZ@aZsK7sC4GfrtywLc1u1Dh0HXb5phDZk33Nt3BHJzyLBoSX0C5E8EAe8fVt0jqsXn78I5dyNccbcCRjUvfn2SLuamy8rnl@8tx2OVi9nVB912fVa9xKLhBaw2m5s@@7Q75fkzDEbNmO/o9HizRt3BAapfPTNoef3xhv10gjoGo05Ey53AC3fw37YYjAVmv7LSfhhQ@Oh479mKHhWBaoSL1JKdPDE1v4wzV4IzOPYEkpvFpa@ZSe7IVroIDTUoIl2xvd/AX6/@1FHg5Q/BfwSSOxGuJdvhwlf0lKqkIIsN1Sui0tEmwtdVI6YXZlSEtuLSsBRLck@eiDgwnVxNLTdTSt8I5cKzE20hRfpEmHR0E7uQnThQcz3yldJKvdDIJuJH2w2btiF7rvkJ "Perl 5 – Try It Online"
#5: Post edited
# [Perl 5], 144 bytes- Reads a string from stdin. Exits 0 if valid tour, 1 if invalid.
- ```
perl -ne'map{$h=~y/a-y7-Y/f-~<-Y./;$h.=q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|}1..5;%h=$h=~/[^a-z]+|./g;map{exit(1)if$p&&$h{lc$_}!~/$p/;$p=$_}/./g'- ```
- ```
- echo 'ALURYNEHSVKBITWPGDOXQFCJM' | perl -ne'
- # extend board upward:
- # 789:;
- # <=>?@
- # ABCDE
- # FGHIJ
- # KLMNO
- # PQRST
- # UVWXY
# using ABCDE row as examplar, encoded as lowercase move# followed by "uppercase" valid previous positions,# generate all five rows by repeatedly translating ascii+5- # to avoid running into the lowercase ascii letter range,
- # everything above "Y" is just translated to "."
- map {
- $h =~ y/a-y7-Y/f-~<-Y./;
- $h .= q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|
- } 1..5;
# initialise lookup table by splitting the string%h = $h =~ /[^a-z]+|./g;- # walk the moves
- map {
# after first move, look up valid previous positions# of current move and abort if actual previous# position is not listedexit(1) if $p && $h{lc$_} !~ /$p/;$p=$_- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
[Try it online!][TIO-mpnpqx2u]- [Perl 5]: https://www.perl.org/
[TIO-mpnpqx2u]: https://tio.run/##dZBZb9NAFIXf/SuG4G6APaqgapupA17idbwvscVSualTR0pt43EkSpafThgXYQESb3PmfnPuOdMU7eri8BJ0BelAmbdVQQizJgUg6zsCTopvy@4EMVSA/gg2gG2F0SJfkeJTNULgoe5qcF9XBdgx/aRr188DZl7Wjw1imnZZdQswOuLeviOAm4DRG/aW@kHAv4IQHR7zZsOWwv4J5tzTJZfBBbe/4TIeIrbkha/b/Gqi47vL6/eGZc@vxjcfVBM799dI0Gy3GE90Z7s75/kLdFQKvQ38@CXnvn9@veXhA@q9@9Cn52fLBdscH7PlZjVnb3cv9pBt6IZGoAJS9N/@iOkrjX@lp40RQ9nTs4NtyqqfuormzSJDspJQnzpZEGMRjEHfnBFxHGTOVA8TSzKimacpbuqrsmn/Bv569acdBZ5/lfmPgYgHAhuS6c0cWY2olejGgabYqZ9Z04FwVEUL6IXup54pYxqWYmFiSwMRuLqVKJGBYzlzNE9KbTOczkRfHQidShyaqWQFrpKoviNnRmR7WjwQP@qmW9YVOXDVTw "Perl 5 – Try It Online"
- # [Perl 5], 130 bytes
- Reads a string from stdin. Exits 0 if valid tour, 1 if invalid.
- ```
- perl -ne'map{$h=~y/a-y7-Y/f-~<-Y./;$h.=q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|}1..5;map{exit(1)if$p&&$h!~(lc."[^a-z]*$p");$p=$_}/./g'
- ```
- ```
- echo 'ALURYNEHSVKBITWPGDOXQFCJM' | perl -ne'
- # extend board upward:
- # 789:;
- # <=>?@
- # ABCDE
- # FGHIJ
- # KLMNO
- # PQRST
- # UVWXY
- # using ABCDE row as examplar, encode lookup data as lowercase
- # move followed by "uppercase" valid previous positions
- # generate a lookup string containing data for all five rows
- # by repeatedly translating ascii+5
- # to avoid running into the lowercase ascii letter range,
- # everything above "Y" is just translated to "."
- map {
- $h =~ y/a-y7-Y/f-~<-Y./;
- $h .= q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|
- } 1..5;
- # walk the moves
- map {
- # after first move, check if actual previous position
- # of current move is present in the lookup data
- # and abort if not
- exit(1) if $p && $h!~(lc."[^a-z]*$p");
- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
- [Try it online!][TIO-mpo06zyg]
- [Perl 5]: https://www.perl.org/
- [TIO-mpo06zyg]: https://tio.run/##dZDpTttAFIX/z1NMjQsJqm0hQEAGp/US7/sWW12QCQ6OFGzjcaRSSB696ZiqVqnUf3PnfvPpnGmKdn2@P4BdgTtY5m1VYAw2uIB4c4vhUfF91R0hQAbYH@EzpFueWuZrXHypKATv666Gd3VVwC3oN127eV2ARVk/NAg07arqlpB6z5yeYchMIfWBviE@DrLHHIf2D3nzTJf87onLmacLJuOWzO6ayVgO0SXLP77kl1PNur24@qib9uJycv1JMSzn7grxqu0Wk6nmvGxPWPYcgV7UJxydjFdLujk8pMt3u9F6wVKfv@XMj6/HdEONEd3w9M2WY7n7fysj0LeY/A5MSiJA2NF4bxuS4qeurHrzSBfNJNRmThbElgAnsC8LBCsOMmemhYkp6tHcU2U39RXJsP8Ab179rSPA60eC/wgEayAsXTS8uSMpEVEJbhyosp36mTkbCEeR1YBcaH7qGZJFwhIsTGxxIAJXMxM50q1YyhzVE1PbCGdzwVcGQiOjFRqpaAaunCi@I2V6ZHtqPBA/66Zb1RXeM9Uv "Perl 5 – Try It Online"
#4: Post edited
# [Perl 5], 189 bytesReads a string from stdin. Exits 0 if valid tour; 1 if invalid.- ```
perl -ne'%h=AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr=~/[a-z]+|./g;map{exit(1)if$p&&$h{$_}!~/$p/i;$p=$_}/./g'- ```
- ```
perl -ne'# initialise lookup table of valid previous moves# by splitting a bare string%h =AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr=~ /[a-z]+|./g;- # walk the moves
# after first move, lookup valid previous positions for the move# and abort if actual previous position is not listed- map {
exit(1) if $p && $h{$_} !~ /$p/i;$p = $_- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
[Try it online!][TIO-mpmwuwn0]- [Perl 5]: https://www.perl.org/
[TIO-mpmwuwn0]: https://tio.run/##dZFZb9NAFIXf/SuG4G5AalXAS60geYn3fYstQJWTeEvssTNjJymh/emESRERIPE2Z@43R/ec6TJUfzy@Bn2Ge1CmCGYYUwPOAB7mGFxl@6q/YikiwOkIDoBGk1Ge1jj7AkcsKNq@BcsWZuCJOk16NLwMqEXZNh1LdaiCfQ5GF@P3HzAYfwKjd/QD8WPA7RuGYY8X5YQra75aN0K@qqFYNO20hNKi2chL2CElzdbtBqvzGvXaosH6vERbI11UeNiZ82W@6vrt3lpkxWb3aC9LtHeKZufmJdx7RbVuh0e/XNXboGp2YY2idYNnNez6uGk3CUSTZ@ZzOv729e33W6Zgm7Q7nCJe391UOd1dXtLlgX54evXM0B1TsXQ3IYoh5L9lsdQp//2vqKQeliLs9c3R1ATJjW1RdmaByuuRr0ytxAsNDtyDU00UZ4ReYk0VP9J5NZg5smjHriRo5m/gr1d/2hHg5Quo/xhwxpkwVF5zZpYgBcSKs0NPFs3YTfTpmbAkUfbIheLGjiYYZFmC@ZHJnwnPVvRIDFQjFBJLdvjY1PzpjHOlM6EQafhazOueLUaSawmJGpiOHJ6JH23XVy3ExzH8CQ "Perl 5 – Try It Online"
- # [Perl 5], 144 bytes
- Reads a string from stdin. Exits 0 if valid tour, 1 if invalid.
- ```
- perl -ne'map{$h=~y/a-y7-Y/f-~<-Y./;$h.=q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|}1..5;%h=$h=~/[^a-z]+|./g;map{exit(1)if$p&&$h{lc$_}!~/$p/;$p=$_}/./g'
- ```
- ```
- echo 'ALURYNEHSVKBITWPGDOXQFCJM' | perl -ne'
- # extend board upward:
- # 789:;
- # <=>?@
- # ABCDE
- # FGHIJ
- # KLMNO
- # PQRST
- # UVWXY
- # using ABCDE row as examplar, encoded as lowercase move
- # followed by "uppercase" valid previous positions,
- # generate all five rows by repeatedly translating ascii+5
- # to avoid running into the lowercase ascii letter range,
- # everything above "Y" is just translated to "."
- map {
- $h =~ y/a-y7-Y/f-~<-Y./;
- $h .= q|a8>HLb79?IKMc8:<@FJLNd9;=GMOe:>HN|
- } 1..5;
- # initialise lookup table by splitting the string
- %h = $h =~ /[^a-z]+|./g;
- # walk the moves
- map {
- # after first move, look up valid previous positions
- # of current move and abort if actual previous
- # position is not listed
- exit(1) if $p && $h{lc$_} !~ /$p/;
- $p=$_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
- [Try it online!][TIO-mpnpqx2u]
- [Perl 5]: https://www.perl.org/
- [TIO-mpnpqx2u]: https://tio.run/##dZBZb9NAFIXf/SuG4G6APaqgapupA17idbwvscVSualTR0pt43EkSpafThgXYQESb3PmfnPuOdMU7eri8BJ0BelAmbdVQQizJgUg6zsCTopvy@4EMVSA/gg2gG2F0SJfkeJTNULgoe5qcF9XBdgx/aRr188DZl7Wjw1imnZZdQswOuLeviOAm4DRG/aW@kHAv4IQHR7zZsOWwv4J5tzTJZfBBbe/4TIeIrbkha/b/Gqi47vL6/eGZc@vxjcfVBM799dI0Gy3GE90Z7s75/kLdFQKvQ38@CXnvn9@veXhA@q9@9Cn52fLBdscH7PlZjVnb3cv9pBt6IZGoAJS9N/@iOkrjX@lp40RQ9nTs4NtyqqfuormzSJDspJQnzpZEGMRjEHfnBFxHGTOVA8TSzKimacpbuqrsmn/Bv569acdBZ5/lfmPgYgHAhuS6c0cWY2olejGgabYqZ9Z04FwVEUL6IXup54pYxqWYmFiSwMRuLqVKJGBYzlzNE9KbTOczkRfHQidShyaqWQFrpKoviNnRmR7WjwQP@qmW9YVOXDVTw "Perl 5 – Try It Online"
#3: Post edited
# [Perl 5], 195 bytes- Reads a string from stdin. Exits 0 if valid tour; 1 if invalid.
- ```
perl -ne'%h=map{uc}AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr=~/[a-z]+|./g;map{exit(1)if$p&&$h{$_}!~/$p/;$p=$_}/./g'- ```
- ```
- perl -ne'
- # initialise lookup table of valid previous moves
- # by splitting a bare string
%h = map {uc}- AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr
- =~ /[a-z]+|./g;
- # walk the moves
- # after first move, lookup valid previous positions for the move
- # and abort if actual previous position is not listed
- map {
exit(1) if $p && $h{$_} !~ /$p/;- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
[Try it online!][TIO-mpmwm0vl]- [Perl 5]: https://www.perl.org/
[TIO-mpmwm0vl]: https://tio.run/##dZFZb9NAFIXf/SuG4G5AalXAS60geYn3fYstQJXjeEvsseOxk5TQ/nTCuIgIkHibM/e7R/ee26Zd9fH0GvQp6kERdzBFiBhQCtCwROAqPZT9FU1gAcYnOAKym02yuELpFzihQd70DVg1MAVPxFjpu@GlQCRFU7c00XYl7DMwuZi@/4DA9BOYvCMfsB8Fbt9QFH26KGZ13B6H5IkpKrbc1Fy2riCf1828gEJSb8UVbDspTjfNFsnLquuVpEbqsuh2WpyUaNjry1W2bvvdwUjSfLt/NFdFd7Dyem9nBTw4eblphke3WFc7r6z3ftUFmxotKtj2Yd1sI9jNnqnP8fTb17ffb6mcHqcZN72@uykzsr28JIsj@fD06pkiW4om2xkWFAb/jYwmxhTufy2MQ6IJzF7fnHSFE@zQ5EVr4cmsGrjS3IgcX2PAPRjDIhjNdyJjLrmBysrewhJ5M7QFTtF/A391/WmHgZdDEP8xYLQzocmsYi0MTvCwFWP6jsjroR2p8zNhCLzo4A/JDi2F0/CwGHMDnT0TjimpAe/Jms9Fhmixoa648wVjC2dCwlJzlZBVHZMPBNvgItnTLdE/Ez@ati8biE5T@BM "Perl 5 – Try It Online"
- # [Perl 5], 189 bytes
- Reads a string from stdin. Exits 0 if valid tour; 1 if invalid.
- ```
- perl -ne'%h=AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr=~/[a-z]+|./g;map{exit(1)if$p&&$h{$_}!~/$p/i;$p=$_}/./g'
- ```
- ```
- perl -ne'
- # initialise lookup table of valid previous moves
- # by splitting a bare string
- %h =
- AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr
- =~ /[a-z]+|./g;
- # walk the moves
- # after first move, lookup valid previous positions for the move
- # and abort if actual previous position is not listed
- map {
- exit(1) if $p && $h{$_} !~ /$p/i;
- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
- [Try it online!][TIO-mpmwuwn0]
- [Perl 5]: https://www.perl.org/
- [TIO-mpmwuwn0]: https://tio.run/##dZFZb9NAFIXf/SuG4G5AalXAS60geYn3fYstQJWTeEvssTNjJymh/emESRERIPE2Z@43R/ec6TJUfzy@Bn2Ge1CmCGYYUwPOAB7mGFxl@6q/YikiwOkIDoBGk1Ge1jj7AkcsKNq@BcsWZuCJOk16NLwMqEXZNh1LdaiCfQ5GF@P3HzAYfwKjd/QD8WPA7RuGYY8X5YQra75aN0K@qqFYNO20hNKi2chL2CElzdbtBqvzGvXaosH6vERbI11UeNiZ82W@6vrt3lpkxWb3aC9LtHeKZufmJdx7RbVuh0e/XNXboGp2YY2idYNnNez6uGk3CUSTZ@ZzOv729e33W6Zgm7Q7nCJe391UOd1dXtLlgX54evXM0B1TsXQ3IYoh5L9lsdQp//2vqKQeliLs9c3R1ATJjW1RdmaByuuRr0ytxAsNDtyDU00UZ4ReYk0VP9J5NZg5smjHriRo5m/gr1d/2hHg5Quo/xhwxpkwVF5zZpYgBcSKs0NPFs3YTfTpmbAkUfbIheLGjiYYZFmC@ZHJnwnPVvRIDFQjFBJLdvjY1PzpjHOlM6EQafhazOueLUaSawmJGpiOHJ6JH23XVy3ExzH8CQ "Perl 5 – Try It Online"
#2: Post edited
# [Perl 5], 206 bytes- Reads a string from stdin. Exits 0 if valid tour; 1 if invalid.
- ```
perl -ne'$h{$1}=uc$2while AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr=~/(.)([^A-Z]+)/g;map{exit(1)if$p&&$h{$_}!~/$p/;$p=$_}/./g'- ```
- ```
- perl -ne'
- # initialise lookup table of valid previous moves
- # by splitting a bare string
$h{$1} = uc $2 while- AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr
=~ /(.)([^A-Z]+)/g;- # walk the moves
- # after first move, lookup valid previous positions for the move
- # and abort if actual previous position is not listed
- map {
- exit(1) if $p && $h{$_} !~ /$p/;
- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
[Try it online!][TIO-mpmvbmtx]- [Perl 5]: https://www.perl.org/
[TIO-mpmvbmtx]: https://tio.run/##dZFpj5pQFIa/8ytuLZ3Rtkqmy5chNmGRfd@EbhNFNoULckGdGOen18I0JW2TfrvvPc95c857qqjOP15fgiZCDUhXNYwQwloUAdSuEbiNTllzS2KdAP0TnAFez0fxKkfRVzgiQVI2JdiUMAIXrK80dftcwMK0LCoSq@oMNjEYvZq@/4DA9BMYvcUfOj8CzF4TBHnF0zN@d5m3If7umGZ5BKg0p7NdwcTbHLJJUS5SyIXFnt/AqhZW0a7cI3Gd140UFkhep/VBWYUZao/qehNvq@Zw0sIo2R8f9U1an4ykOJpxCk9Wku3K9tFOt/nByYqjm9ferkDLHFaNX5T7ANbzJ2I8m4y/fKemn7@9mRAJWayqc7/0@G6SxXh1c9MP@3B58UTgFUHi1bwTxIxI/k2PxPpA7n/t3uVFYh07nlxVieFMX2d5Y@mItOzZwkILLFehwD3oc8MoxbUCbSHYnkyLztLgWd03OUZSfwN/df1p1wHPN8H@Y0ApA6GItGQsNYZzOitKdy2eVX0zkBcDoXEsb3UfgukbEqN0w3aY7an0QFi6IHusIyouE2i8QfuqZC@WlMkNhNBJxZZ8WrZ01uNMjQlERzV4dyB@lFWTlRBdp/An "Perl 5 – Try It Online"
- # [Perl 5], 195 bytes
- Reads a string from stdin. Exits 0 if valid tour; 1 if invalid.
- ```
- perl -ne'%h=map{uc}AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr=~/[a-z]+|./g;map{exit(1)if$p&&$h{$_}!~/$p/;$p=$_}/./g'
- ```
- ```
- perl -ne'
- # initialise lookup table of valid previous moves
- # by splitting a bare string
- %h = map {uc}
- AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr
- =~ /[a-z]+|./g;
- # walk the moves
- # after first move, lookup valid previous positions for the move
- # and abort if actual previous position is not listed
- map {
- exit(1) if $p && $h{$_} !~ /$p/;
- $p = $_
- } /./g
- # if we get here, assume valid and exit(0)
- '
- ```
- [Try it online!][TIO-mpmwm0vl]
- [Perl 5]: https://www.perl.org/
- [TIO-mpmwm0vl]: https://tio.run/##dZFZb9NAFIXf/SuG4G5AalXAS60geYn3fYstQJXjeEvsseOxk5TQ/nTCuIgIkHibM/e7R/ee26Zd9fH0GvQp6kERdzBFiBhQCtCwROAqPZT9FU1gAcYnOAKym02yuELpFzihQd70DVg1MAVPxFjpu@GlQCRFU7c00XYl7DMwuZi@/4DA9BOYvCMfsB8Fbt9QFH26KGZ13B6H5IkpKrbc1Fy2riCf1828gEJSb8UVbDspTjfNFsnLquuVpEbqsuh2WpyUaNjry1W2bvvdwUjSfLt/NFdFd7Dyem9nBTw4eblphke3WFc7r6z3ftUFmxotKtj2Yd1sI9jNnqnP8fTb17ffb6mcHqcZN72@uykzsr28JIsj@fD06pkiW4om2xkWFAb/jYwmxhTufy2MQ6IJzF7fnHSFE@zQ5EVr4cmsGrjS3IgcX2PAPRjDIhjNdyJjLrmBysrewhJ5M7QFTtF/A391/WmHgZdDEP8xYLQzocmsYi0MTvCwFWP6jsjroR2p8zNhCLzo4A/JDi2F0/CwGHMDnT0TjimpAe/Jms9Fhmixoa648wVjC2dCwlJzlZBVHZMPBNvgItnTLdE/Ez@ati8biE5T@BM "Perl 5 – Try It Online"
#1: Initial revision
# [Perl 5], 206 bytes
Reads a string from stdin. Exits 0 if valid tour; 1 if invalid.
```
perl -ne'$h{$1}=uc$2while AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr=~/(.)([^A-Z]+)/g;map{exit(1)if$p&&$h{$_}!~/$p/;$p=$_}/./g'
```
```
perl -ne'
# initialise lookup table of valid previous moves
# by splitting a bare string
$h{$1} = uc $2 while
AhlBikmCfjlnDgmoEhnFcmqGdnprHaekoqsIblrtJcmsKbhrvLacisuwMbdfjptvxNcegqwyOdhrxPgmwQfhnxRgikouyShjlvTimwUlrVkmsWlnptXmoqYnr
=~ /(.)([^A-Z]+)/g;
# walk the moves
# after first move, lookup valid previous positions for the move
# and abort if actual previous position is not listed
map {
exit(1) if $p && $h{$_} !~ /$p/;
$p = $_
} /./g
# if we get here, assume valid and exit(0)
'
```
[Try it online!][TIO-mpmvbmtx]
[Perl 5]: https://www.perl.org/
[TIO-mpmvbmtx]: https://tio.run/##dZFpj5pQFIa/8ytuLZ3Rtkqmy5chNmGRfd@EbhNFNoULckGdGOen18I0JW2TfrvvPc95c857qqjOP15fgiZCDUhXNYwQwloUAdSuEbiNTllzS2KdAP0TnAFez0fxKkfRVzgiQVI2JdiUMAIXrK80dftcwMK0LCoSq@oMNjEYvZq@/4DA9BMYvcUfOj8CzF4TBHnF0zN@d5m3If7umGZ5BKg0p7NdwcTbHLJJUS5SyIXFnt/AqhZW0a7cI3Gd140UFkhep/VBWYUZao/qehNvq@Zw0sIo2R8f9U1an4ykOJpxCk9Wku3K9tFOt/nByYqjm9ferkDLHFaNX5T7ANbzJ2I8m4y/fKemn7@9mRAJWayqc7/0@G6SxXh1c9MP@3B58UTgFUHi1bwTxIxI/k2PxPpA7n/t3uVFYh07nlxVieFMX2d5Y@mItOzZwkILLFehwD3oc8MoxbUCbSHYnkyLztLgWd03OUZSfwN/df1p1wHPN8H@Y0ApA6GItGQsNYZzOitKdy2eVX0zkBcDoXEsb3UfgukbEqN0w3aY7an0QFi6IHusIyouE2i8QfuqZC@WlMkNhNBJxZZ8WrZ01uNMjQlERzV4dyB@lFWTlRBdp/An "Perl 5 – Try It Online"
