fork download
  1. USING: kernel sequences math prettyprint memoize fry ;
  2. IN: scratchpad
  3.  
  4. DEFER: gray
  5.  
  6. : gray-1 ( n -- seq )
  7. drop
  8. { "0" "1" }
  9. ;
  10.  
  11. : prepend-each ( seq x -- seq' )
  12. '[ _ prepend ] map
  13. ;
  14.  
  15. : gray-n ( n -- seq )
  16. 1 - gray
  17. dup reverse!
  18. [ "0" prepend-each ] [ "1" prepend-each ] bi*
  19. append
  20. ;
  21.  
  22. MEMO: gray ( n -- seq )
  23. dup 1 =
  24. [ gray-1 ] [ gray-n ] if
  25. ;
  26.  
  27. 3 gray .
  28. 4 gray .
  29. 5 gray .
Success #stdin #stdout 0.23s 163968KB
stdin
Standard input is empty
stdout
{ "010" "011" "000" "001" "110" "111" "100" "101" }
{
    "0101"
    "0100"
    "0111"
    "0110"
    "0001"
    "0000"
    "0011"
    "0010"
    "1101"
    "1100"
    "1111"
    "1110"
    "1001"
    "1000"
    "1011"
    "1010"
}
{
    "01010"
    "01011"
    "01000"
    "01001"
    "01110"
    "01111"
    "01100"
    "01101"
    "00010"
    "00011"
    "00000"
    "00001"
    "00110"
    "00111"
    "00100"
    "00101"
    "11010"
    "11011"
    "11000"
    "11001"
    "11110"
    "11111"
    "11100"
    "11101"
    "10010"
    "10011"
    "10000"
    "10001"
    "10110"
    "10111"
    "10100"
    "10101"
}