progs/sudoku.scala
changeset 320 cdfb2ce30a3d
parent 301 c3b33c709696
child 321 7b0055205ec9
equal deleted inserted replaced
319:b84ea52bfd8f 320:cdfb2ce30a3d
    76        "1...34.8....8..5....4.6..21.18......3..1.2..6......81.52..7.9....6..9....9.64...2",
    76        "1...34.8....8..5....4.6..21.18......3..1.2..6......81.52..7.9....6..9....9.64...2",
    77        "...92......68.3...19..7...623..4.1....1...7....8.3..297...8..91...5.72......64...",
    77        "...92......68.3...19..7...623..4.1....1...7....8.3..297...8..91...5.72......64...",
    78        ".6.5.4.3.1...9...8.........9...5...6.4.6.2.7.7...4...5.........4...8...1.5.2.3.4.",
    78        ".6.5.4.3.1...9...8.........9...5...6.4.6.2.7.7...4...5.........4...8...1.5.2.3.4.",
    79        "7.....4...2..7..8...3..8.799..5..3...6..2..9...1.97..6...3..9...3..4..6...9..1.35",
    79        "7.....4...2..7..8...3..8.799..5..3...6..2..9...1.97..6...3..9...3..4..6...9..1.35",
    80        "....7..2.8.......6.1.2.5...9.54....8.........3....85.1...3.2.8.4.......9.7..6....",
    80        "....7..2.8.......6.1.2.5...9.54....8.........3....85.1...3.2.8.4.......9.7..6....",
    81 //       "4.....8.5.3..........7......2.....6.....8.4......1.......6.3.7.5..2.....1.4......",
       
    82        "52...6.........7.13...........4..8..6......5...........418.........3..2...87.....",
    81        "52...6.........7.13...........4..8..6......5...........418.........3..2...87.....",
    83        "6.....8.3.4.7.................5.4.7.3..2.....1.6.......2.....5.....8.6......1....",
    82        "6.....8.3.4.7.................5.4.7.3..2.....1.6.......2.....5.....8.6......1....",
    84        "48.3............71.2.......7.5....6....2..8.............1.76...3.....4......5....",
    83        "48.3............71.2.......7.5....6....2..8.............1.76...3.....4......5....",
    85 //       "....14....3....2...7..........9...3.6.1.............8.2.....1.4....5.6.....7.8...",
       
    86        "......52..8.4......3...9...5.1...6..2..7........3.....6...1..........7.4.......3.",
    84        "......52..8.4......3...9...5.1...6..2..7........3.....6...1..........7.4.......3.",
    87        "6.2.5.........3.4..........43...8....1....2........7..5..27...........81...6.....",
    85        "6.2.5.........3.4..........43...8....1....2........7..5..27...........81...6.....",
    88        ".524.........7.1..............8.2...3.....6...9.5.....1.6.3...........897........",
    86        ".524.........7.1..............8.2...3.....6...9.5.....1.6.3...........897........",
    89        "6.2.5.........4.3..........43...8....1....2........7..5..27...........81...6.....",
    87        "6.2.5.........4.3..........43...8....1....2........7..5..27...........81...6.....",
    90        ".923.........8.1...........1.7.4...........658.........6.5.2...4.....7.....9.....",
    88        ".923.........8.1...........1.7.4...........658.........6.5.2...4.....7.....9.....",
    98        "45.....3....8.1....9...........5..9.2..7.....8.........1..4..........7.2...6..8..",
    96        "45.....3....8.1....9...........5..9.2..7.....8.........1..4..........7.2...6..8..",
    99        ".237....68...6.59.9.....7......4.97.3.7.96..2.........5..47.........2....8.......",
    97        ".237....68...6.59.9.....7......4.97.3.7.96..2.........5..47.........2....8.......",
   100        "..84...3....3.....9....157479...8........7..514.....2...9.6...2.5....4......9..56",
    98        "..84...3....3.....9....157479...8........7..514.....2...9.6...2.5....4......9..56",
   101        ".98.1....2......6.............3.2.5..84.........6.........4.8.93..5...........1..",
    99        ".98.1....2......6.............3.2.5..84.........6.........4.8.93..5...........1..",
   102        "..247..58..............1.4.....2...9528.9.4....9...1.........3.3....75..685..2...",
   100        "..247..58..............1.4.....2...9528.9.4....9...1.........3.3....75..685..2...",
   103 //       "4.....8.5.3..........7......2.....6.....5.4......1.......6.3.7.5..2.....1.9......",
       
   104        ".2.3......63.....58.......15....9.3....7........1....8.879..26......6.7...6..7..4",
   101        ".2.3......63.....58.......15....9.3....7........1....8.879..26......6.7...6..7..4",
   105        "1.....7.9.4...72..8.........7..1..6.3.......5.6..4..2.........8..53...7.7.2....46",
   102        "1.....7.9.4...72..8.........7..1..6.3.......5.6..4..2.........8..53...7.7.2....46",
   106        "4.....3.....8.2......7........1...8734.......6........5...6........1.4...82......",
   103        "4.....3.....8.2......7........1...8734.......6........5...6........1.4...82......",
   107        ".......71.2.8........4.3...7...6..5....2..3..9........6...7.....8....4......5....",
   104        ".......71.2.8........4.3...7...6..5....2..3..9........6...7.....8....4......5....",
   108        "6..3.2....4.....8..........7.26............543.........8.15........8.2........7..",
   105        "6..3.2....4.....8..........7.26............543.........8.15........8.2........7..",
   111        "38.6.......9.......2..3.51......5....3..1..6....4......17.5..8.......9.......7.32",
   108        "38.6.......9.......2..3.51......5....3..1..6....4......17.5..8.......9.......7.32",
   112        "...5...........5.697.....2...48.2...25.1...3..8..3.........4.7..13.5..9..2...31..",
   109        "...5...........5.697.....2...48.2...25.1...3..8..3.........4.7..13.5..9..2...31..",
   113        ".2.......3.5.62..9.68...3...5..........64.8.2..47..9....3.....1.....6...17.43....",
   110        ".2.......3.5.62..9.68...3...5..........64.8.2..47..9....3.....1.....6...17.43....",
   114        ".8..4....3......1........2...5...4.69..1..8..2...........3.9....6....5.....2.....",
   111        ".8..4....3......1........2...5...4.69..1..8..2...........3.9....6....5.....2.....",
   115        "..8.9.1...6.5...2......6....3.1.7.5.........9..4...3...5....2...7...3.8.2..7....4",
   112        "..8.9.1...6.5...2......6....3.1.7.5.........9..4...3...5....2...7...3.8.2..7....4",
   116 //       "4.....5.8.3..........7......2.....6.....5.8......1.......6.3.7.5..2.....1.8......",
       
   117        "1.....3.8.6.4..............2.3.1...........958.........5.6...7.....8.2...4.......",
   113        "1.....3.8.6.4..............2.3.1...........958.........5.6...7.....8.2...4.......",
   118        "1....6.8..64..........4...7....9.6...7.4..5..5...7.1...5....32.3....8...4........",
   114        "1....6.8..64..........4...7....9.6...7.4..5..5...7.1...5....32.3....8...4........",
   119        "249.6...3.3....2..8.......5.....6......2......1..4.82..9.5..7....4.....1.7...3...",
   115        "249.6...3.3....2..8.......5.....6......2......1..4.82..9.5..7....4.....1.7...3...",
   120        "...8....9.873...4.6..7.......85..97...........43..75.......3....3...145.4....2..1",
   116        "...8....9.873...4.6..7.......85..97...........43..75.......3....3...145.4....2..1",
   121 //       "...5.1....9....8...6.......4.1..........7..9........3.8.....1.5...2..4.....36....",
       
   122        "......8.16..2........7.5......6...2..1....3...8.......2......7..3..8....5...4....",
   117        "......8.16..2........7.5......6...2..1....3...8.......2......7..3..8....5...4....",
   123        ".476...5.8.3.....2.....9......8.5..6...1.....6.24......78...51...6....4..9...4..7",
   118        ".476...5.8.3.....2.....9......8.5..6...1.....6.24......78...51...6....4..9...4..7",
   124        ".....7.95.....1...86..2.....2..73..85......6...3..49..3.5...41724................",
   119        ".....7.95.....1...86..2.....2..73..85......6...3..49..3.5...41724................",
   125        ".4.5.....8...9..3..76.2.....146..........9..7.....36....1..4.5..6......3..71..2..",
   120        ".4.5.....8...9..3..76.2.....146..........9..7.....36....1..4.5..6......3..71..2..",
   126        ".834.........7..5...........4.1.8..........27...3.....2.6.5....5.....8........1..",
   121        ".834.........7..5...........4.1.8..........27...3.....2.6.5....5.....8........1..",
   196 }
   191 }
   197 
   192 
   198 
   193 
   199 
   194 
   200 // 1 single thread version 800 secs
   195 // 1 single thread version 800 secs
   201 // 4 cores parallel version on moderate laptop 400 secs
   196 // 4 cores parallel version on a moderate laptop 400 secs
   202 // 8 cores (4 physical + 4 hyperthread): 290 secs
   197 // 8 cores: 290 secs
   203 // 36 cores (18 physical + 18 hyperthread): 142 secs
   198 // 18 cores: 142 secs
   204 
   199