Post History
AWK, 145 bytes Pass 64 character string of 1s and 0s on stdin. Zero exit means success; non-zero means failure. awk 'function n(i){i<1||i>72||c-$i||($i=2)+n(i+9)+n(i+1)+n(i-9)+n(i-1)}{gsub...
#4: Post edited
**This code is broken (Fails: "The grid does not wrap toroidally")**<s># AWK, 127 bytes- Pass 64 character string of 1s and 0s on stdin.
- Zero exit means success; non-zero means failure.
- ```
awk 'function n(i){i<1||i>64||c-$i||($i=2)+n(i+8)+n(i+1)+n(i-8)+n(i-1)}{n(index($0,0));c=1;n(index($0,1));exit/[01]/}' FS= OFS=- ```
- Comments:
- ```
- awk '
- function n(i){
i<1||i>64 || # out of bounds?- c-$i || # incorrect value?
- ($i=2)+\
n(i+8)+n(i+1)+n(i-8)+n(i-1) # mark(replace) then recurse- }
- {
- n(index($0,0)); # find connected 0s
- c=1; n(index($0,1)); # find connected 1s
- exit /[01]/ # zero iff no 0s or 1s left
- }
- ' FS= OFS=
- ```
- * Same basic logic as my Perl answer
- * `FS=` (non-standard but widely implemented) splits line into fields containing individual characters
- * `OFS=` - assigning to a field cause line to be rewritten with fields separated by `OFS`; clearing it means result is unchanged (affects `index`)
[Try it online!][TIO-mmgi6y0b][TIO-mmgi6y0b]: https://tio.run/##rVJRS8MwEH7Przi6Ci1rWU5ExNoJgoov@rBHESldikFJpclw0PS317Td2o1WsNaEcLnLx3ff3SX6ei9nkKQZKCYVvEWZYFKSHD4zLlQC1okEfwmWBzaFgpCb2/uHxxzuVuGTOa9QlMlGxIqnAoTD3ZxfodZ8eX6mdezbXGvH5uGpOzeP84vGYG38xvPRLXJC4pAGAANCiMGINds6NvWo6wZxiMFBCE2IkBnbcgWLZ4ovC1IL3zlwDVYSfUhmwSVYKtuYy0AWr6kWuJCKRWtIE6gYSVGWdOIyeau0BCeuPc9EOVN58H95sOpPPaCOqKp2yI5s9GhFXaMbQV3v948dqB8ZnNhRZfhHQ3uKWsLGwxqJx7uNt7j@H6pBiPQX@4Dux1bjblRj9DSFfQM "AWK – Try It Online"</s>
- # AWK, 145 bytes
- Pass 64 character string of 1s and 0s on stdin.
- Zero exit means success; non-zero means failure.
- ```
- awk 'function n(i){i<1||i>72||c-$i||($i=2)+n(i+9)+n(i+1)+n(i-9)+n(i-1)}{gsub(/.{8}/,"&2");n(index($0,0));c=1;n(index($0,1));exit/[01]/}' FS= OFS=
- ```
- Comments:
- ```
- awk '
- function n(i){
- i<1||i>72 || # out of bounds?
- c-$i || # incorrect value?
- ($i=2)+\
- n(i+9)+n(i+1)+n(i-9)+n(i-1) # mark(replace) then recurse
- }
- {
- gsub(/.{8}/,"&2"); # add sentinels to detect horizontal wrap
- n(index($0,0)); # find connected 0s
- c=1; n(index($0,1)); # find connected 1s
- exit /[01]/ # zero iff no 0s or 1s left
- }
- ' FS= OFS=
- ```
- * Same basic logic as my Perl answer
- * `FS=` (non-standard but widely implemented) splits line into fields containing individual characters
- * `OFS=` - assigning to a field cause line to be rewritten with fields separated by `OFS`; clearing it means result is unchanged (affects `index`)
- [Try it online!][TIO-mneompza]
- [AWK]: https://www.gnu.org/software/gawk/manual/gawk.html
- [TIO-mneompza]: https://tio.run/##rVJNT4QwEL33V0y6aCAL0uHiB7ImJmq86MGjMQZZ0EbTNbQbNwF@O/KxwG5Asyu2IcNMX99M34z/9Z5PIFrEoEKp4M2PRSglSeAz5kJFQA8kWDOgJmgMMkIur25u7xK4fvDui@8ZsjxaikDxhQChcyPh55imfHbspGlgaTxNdY17jjEtDqentcHKWLVnoZElhAQecwEGCiGvcvmi20fJSWab9NChhkuKa2IernSNmcww3MBDdyOERYiQSbjiCuxHhk82qd6yduACaOR/yJDCGVAVL4ufgcRmLQBwIVXoz2ERQclIsjxnI1eRt0xLcORqeEaWM5YH/5cHS32qBnVE5WuH7J5C711RJ3RdUKd9c9iB@pHBjm29DP9oWK@ilrD2sELi9m7jLa4/QxUIke2wN@h@lBrXrdqnnkahhmXXxm3j@0PUwoYn6pchqom@AQ "AWK – Try It Online"
#3: Post edited
- # AWK, 127 bytes
- Pass 64 character string of 1s and 0s on stdin.
- Zero exit means success; non-zero means failure.
- ```
- awk 'function n(i){i<1||i>64||c-$i||($i=2)+n(i+8)+n(i+1)+n(i-8)+n(i-1)}{n(index($0,0));c=1;n(index($0,1));exit/[01]/}' FS= OFS=
- ```
- Comments:
- ```
- awk '
- function n(i){
- i<1||i>64 || # out of bounds?
- c-$i || # incorrect value?
- ($i=2)+\
- n(i+8)+n(i+1)+n(i-8)+n(i-1) # mark(replace) then recurse
- }
- {
- n(index($0,0)); # find connected 0s
- c=1; n(index($0,1)); # find connected 1s
- exit /[01]/ # zero iff no 0s or 1s left
- }
- ' FS= OFS=
- ```
- * Same basic logic as my Perl answer
- * `FS=` (non-standard but widely implemented) splits line into fields containing individual characters
- * `OFS=` - assigning to a field cause line to be rewritten with fields separated by `OFS`; clearing it means result is unchanged (affects `index`)
- [Try it online!][TIO-mmgi6y0b]
[TIO-mmgi6y0b]: https://tio.run/##rVJRS8MwEH7Przi6Ci1rWU5ExNoJgoov@rBHESldikFJpclw0PS317Td2o1WsNaEcLnLx3ff3SX6ei9nkKQZKCYVvEWZYFKSHD4zLlQC1okEfwmWBzaFgpCb2/uHxxzuVuGTOa9QlMlGxIqnAoTD3ZxfodZ8eX6mdezbXGvH5uGpOzeP84vGYG38xvPRLXJC4pAGAANCiMGINds6NvWo6wZxiMFBCE2IkBnbcgWLZ4ovC1IL3zlwDVYSfUhmwSVYKtuYy0AWr6kWuJCKRWtIE6gYSVGWdOIyeau0BCeuPc9EOVN58H95sOpPPaCOqKp2yI5s9GhFXaMbQV3v948dqB8ZnNhRZfhHQ3uKWsLGwxqJx7uNt7j@H6pBiPQX@4Dux1bjblRj9DSFfQM "AWK – Try It Online"
- **This code is broken (Fails: "The grid does not wrap toroidally")**
- <s>
- # AWK, 127 bytes
- Pass 64 character string of 1s and 0s on stdin.
- Zero exit means success; non-zero means failure.
- ```
- awk 'function n(i){i<1||i>64||c-$i||($i=2)+n(i+8)+n(i+1)+n(i-8)+n(i-1)}{n(index($0,0));c=1;n(index($0,1));exit/[01]/}' FS= OFS=
- ```
- Comments:
- ```
- awk '
- function n(i){
- i<1||i>64 || # out of bounds?
- c-$i || # incorrect value?
- ($i=2)+\
- n(i+8)+n(i+1)+n(i-8)+n(i-1) # mark(replace) then recurse
- }
- {
- n(index($0,0)); # find connected 0s
- c=1; n(index($0,1)); # find connected 1s
- exit /[01]/ # zero iff no 0s or 1s left
- }
- ' FS= OFS=
- ```
- * Same basic logic as my Perl answer
- * `FS=` (non-standard but widely implemented) splits line into fields containing individual characters
- * `OFS=` - assigning to a field cause line to be rewritten with fields separated by `OFS`; clearing it means result is unchanged (affects `index`)
- [Try it online!][TIO-mmgi6y0b]
- [TIO-mmgi6y0b]: https://tio.run/##rVJRS8MwEH7Przi6Ci1rWU5ExNoJgoov@rBHESldikFJpclw0PS317Td2o1WsNaEcLnLx3ff3SX6ei9nkKQZKCYVvEWZYFKSHD4zLlQC1okEfwmWBzaFgpCb2/uHxxzuVuGTOa9QlMlGxIqnAoTD3ZxfodZ8eX6mdezbXGvH5uGpOzeP84vGYG38xvPRLXJC4pAGAANCiMGINds6NvWo6wZxiMFBCE2IkBnbcgWLZ4ovC1IL3zlwDVYSfUhmwSVYKtuYy0AWr6kWuJCKRWtIE6gYSVGWdOIyeau0BCeuPc9EOVN58H95sOpPPaCOqKp2yI5s9GhFXaMbQV3v948dqB8ZnNhRZfhHQ3uKWsLGwxqJx7uNt7j@H6pBiPQX@4Dux1bjblRj9DSFfQM "AWK – Try It Online"
- </s>
#2: Post edited
# awk, 127 bytes- Pass 64 character string of 1s and 0s on stdin.
- Zero exit means success; non-zero means failure.
- ```
- awk 'function n(i){i<1||i>64||c-$i||($i=2)+n(i+8)+n(i+1)+n(i-8)+n(i-1)}{n(index($0,0));c=1;n(index($0,1));exit/[01]/}' FS= OFS=
- ```
- Comments:
- ```
- awk '
- function n(i){
- i<1||i>64 || # out of bounds?
- c-$i || # incorrect value?
- ($i=2)+\
- n(i+8)+n(i+1)+n(i-8)+n(i-1) # mark(replace) then recurse
- }
- {
- n(index($0,0)); # find connected 0s
- c=1; n(index($0,1)); # find connected 1s
- exit /[01]/ # zero iff no 0s or 1s left
- }
- ' FS= OFS=
- ```
- * Same basic logic as my Perl answer
- * `FS=` (non-standard but widely implemented) splits line into fields containing individual characters
* `OFS=` - assigning to a field cause line to be rewritten with fields separated by `OFS`; clearing it means result is unchanged (affects `index`)
- # AWK, 127 bytes
- Pass 64 character string of 1s and 0s on stdin.
- Zero exit means success; non-zero means failure.
- ```
- awk 'function n(i){i<1||i>64||c-$i||($i=2)+n(i+8)+n(i+1)+n(i-8)+n(i-1)}{n(index($0,0));c=1;n(index($0,1));exit/[01]/}' FS= OFS=
- ```
- Comments:
- ```
- awk '
- function n(i){
- i<1||i>64 || # out of bounds?
- c-$i || # incorrect value?
- ($i=2)+\
- n(i+8)+n(i+1)+n(i-8)+n(i-1) # mark(replace) then recurse
- }
- {
- n(index($0,0)); # find connected 0s
- c=1; n(index($0,1)); # find connected 1s
- exit /[01]/ # zero iff no 0s or 1s left
- }
- ' FS= OFS=
- ```
- * Same basic logic as my Perl answer
- * `FS=` (non-standard but widely implemented) splits line into fields containing individual characters
- * `OFS=` - assigning to a field cause line to be rewritten with fields separated by `OFS`; clearing it means result is unchanged (affects `index`)
- [Try it online!][TIO-mmgi6y0b]
- [TIO-mmgi6y0b]: https://tio.run/##rVJRS8MwEH7Przi6Ci1rWU5ExNoJgoov@rBHESldikFJpclw0PS317Td2o1WsNaEcLnLx3ff3SX6ei9nkKQZKCYVvEWZYFKSHD4zLlQC1okEfwmWBzaFgpCb2/uHxxzuVuGTOa9QlMlGxIqnAoTD3ZxfodZ8eX6mdezbXGvH5uGpOzeP84vGYG38xvPRLXJC4pAGAANCiMGINds6NvWo6wZxiMFBCE2IkBnbcgWLZ4ovC1IL3zlwDVYSfUhmwSVYKtuYy0AWr6kWuJCKRWtIE6gYSVGWdOIyeau0BCeuPc9EOVN58H95sOpPPaCOqKp2yI5s9GhFXaMbQV3v948dqB8ZnNhRZfhHQ3uKWsLGwxqJx7uNt7j@H6pBiPQX@4Dux1bjblRj9DSFfQM "AWK – Try It Online"
#1: Initial revision
# awk, 127 bytes
Pass 64 character string of 1s and 0s on stdin.
Zero exit means success; non-zero means failure.
```
awk 'function n(i){i<1||i>64||c-$i||($i=2)+n(i+8)+n(i+1)+n(i-8)+n(i-1)}{n(index($0,0));c=1;n(index($0,1));exit/[01]/}' FS= OFS=
```
Comments:
```
awk '
function n(i){
i<1||i>64 || # out of bounds?
c-$i || # incorrect value?
($i=2)+\
n(i+8)+n(i+1)+n(i-8)+n(i-1) # mark(replace) then recurse
}
{
n(index($0,0)); # find connected 0s
c=1; n(index($0,1)); # find connected 1s
exit /[01]/ # zero iff no 0s or 1s left
}
' FS= OFS=
```
* Same basic logic as my Perl answer
* `FS=` (non-standard but widely implemented) splits line into fields containing individual characters
* `OFS=` - assigning to a field cause line to be rewritten with fields separated by `OFS`; clearing it means result is unchanged (affects `index`)
