ソースコード
今回の連載 python/codonのソースコードディレクトリはこちら
https://github.com/suzukiiichiro/N-Queens/tree/master/13Bit_codon
Nクイーン問題 過去記事アーカイブ
【過去記事アーカイブ】Nクイーン問題 過去記事一覧
https://suzukiiichiro.github.io/search/?keyword=Nクイーン問題
【Github】エイト・クイーンのソース置き場 BashもJavaもPythonも!
https://github.com/suzukiiichiro/N-Queens
Python / Codon Nクイーン bit ミラー版
, #_
~\_ ####_ N-Queens
~~ \_#####\ https://suzukiiichiro.github.io/
~~ \###| N-Queens for github
~~ \#/ ___ https://github.com/suzukiiichiro/N-Queens
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
概要
結論から言えば codon for python 17Py_ は GPU/CUDA 10Bit_CUDA/01CUDA_Bit_Symmetry.cu と同等の速度で動作します。
GPU 実行例
$ nvcc -O3 -arch=sm_61 -m64 -ptx -prec-div=false 04CUDA_Symmetry_BitBoard.cu && POCL_DEBUG=all ./a.out -n ;
対称解除法 GPUビットボード
20: 39029188884 4878666808 000:00:02:02.52
21: 314666222712 39333324973 000:00:18:46.52
22: 2691008701644 336376244042 000:03:00:22.54
23: 24233937684440 3029242658210 001:06:03:49.29
Codon 実行例(AWS m4.16xlarge × 1)
amazon AWS m4.16xlarge x 1
$ codon build -release 15Py_constellations_optimize_codon.py && ./15Py_constellations_optimize_codon
20: 39029188884 0 0:02:52.430
21: 314666222712 0 0:24:25.554
22: 2691008701644 0 3:29:33.971
23: 24233937684440 0 1 day, 8:12:58.977
実行方法
# Python(通常)
$ python <filename.py>
# Codon(ビルドせず実行)
$ codon run <filename.py>
# Codon(ビルドしてネイティブ高速実行)
$ codon build -release < filename.py> && ./<filename>
参考リンク
- Nクイーン問題 過去記事一覧はこちらから
https://suzukiiichiro.github.io/search/?keyword=Nクイーン問題 - エイト・クイーンのプログラムアーカイブ(Bash、Lua、C、Java、Python、CUDAまで!)
https://github.com/suzukiiichiro/N-Queens
N-Queens:ビットボードDFS + 左右対称活用(初手半分+中央列)
ファイル: 06Py_bitboard_sym_half.py
作成日: 2025-10-23
概要
- ビット演算DFSで列・対角衝突を O(1) 判定。
- 対称活用: 1行目は「左半分のみ」を探索し、探索後に ×2。
奇数 N は中央列を別途探索(中央は左右対称に含まれないため ×2 しない)。 - 本段階では Unique は未算出(0 のまま)。Total は正確。
実装の要点(実ソース引用)
- 可置ビット集合:
bitmap = mask & ~(left | down | right) - LSB 抽出:
bit = -bitmap & bitmap - 次行への伝播:
self._dfs(row+1, (left|bit)<<1, (down|bit), (right|bit)>>1) - 初手半分:
for col in range(size//2): ...; self.total *= 2 - 中央列(奇数N):
if (size & 1) == 1: col = size//2; ...(×2 なし)
注意/メモ
- Python
intは無限長だが、Codon 等の固定幅ではmaskによる幅制約が重要。 (left|down|right)は毎手maskと AND を取るので、シフト外ビットは自然に落ちる。- Unique(COUNT2/4/8)は未実装。次段で
symmetryops/ 分類導入。
出力
- N, Total, Unique(=0), 経過時間(ms 相当)を表形式で N=4..18 で出力。
著者 / ライセンス
著者: suzuki/nqdev
ライセンス: MIT(必要に応じて変更)
仕上げのレビュー(要点)
良い点
- 初手半分+中央列のハンドリングが教科書どおりで、
self.total *= 2の位置も正しい。 - DFS 核が最小・明快(
bitmap / bit / ^= / <<1 >>1の定石)。 maskを都度計算せず 初期化で 1 回だけ作るのは◎。
注意点 / 次の一手
- Unique の導入:
symmetryops()(回転・反転の辞書順最小チェック)をビットボード版にも追加予定。 - 半分探索との整合を保つなら、末端で
unique += 1; total += coeffに変更。 - Codon 固定幅: 64bit 想定なら
size <= 32(~64)で使い分け、maskを型に合わせて明示。 - 並列化: 初手列ごとの DFS 分割で
@par/multiprocessingを適用しやすい構造。
実行ログ
fedora$ codon build -release 06Py_bit_mirror_codon.py && ./06Py_bit_mirror_codon
N: Total Unique hh:mm:ss.ms
4: 2 0 0:00:00.000
5: 10 0 0:00:00.000
6: 4 0 0:00:00.000
7: 40 0 0:00:00.000
8: 92 0 0:00:00.000
9: 352 0 0:00:00.000
10: 724 0 0:00:00.000
11: 2680 0 0:00:00.001
12: 14200 0 0:00:00.003
13: 73712 0 0:00:00.029
14: 365596 0 0:00:00.138
15: 2279184 0 0:00:00.848
16: 14772512 0 0:00:05.327
fedora$
ソースコード
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Python/codon Nクイーン bit ミラー版
, #_
~\_ ####_ N-Queens
~~ \_#####\ https://suzukiiichiro.github.io/
~~ \###| N-Queens for github
~~ \#/ ___ https://github.com/suzukiiichiro/N-Queens
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
結論から言えば codon for python 17Py_ は GPU/CUDA 10Bit_CUDA/01CUDA_Bit_Symmetry.cu と同等の速度で動作します。
$ nvcc -O3 -arch=sm_61 -m64 -ptx -prec-div=false 04CUDA_Symmetry_BitBoard.cu && POCL_DEBUG=all ./a.out -n ;
対称解除法 GPUビットボード
20: 39029188884 4878666808 000:00:02:02.52
21: 314666222712 39333324973 000:00:18:46.52
22: 2691008701644 336376244042 000:03:00:22.54
23: 24233937684440 3029242658210 001:06:03:49.29
amazon AWS m4.16xlarge x 1
$ codon build -release 15Py_constellations_optimize_codon.py && ./15Py_constellations_optimize_codon
20: 39029188884 0 0:02:52.430
21: 314666222712 0 0:24:25.554
22: 2691008701644 0 3:29:33.971
23: 24233937684440 0 1 day, 8:12:58.977
python 15py_ 以降の並列処理を除けば python でも動作します
$ python <filename.py>
codon for python ビルドしない実行方法
$ codon run <filename.py>
codon build for python ビルドすればC/C++ネイティブに変換し高速に実行します
$ codon build -release < filename.py> && ./<filename>
詳細はこちら。
【参考リンク】Nクイーン問題 過去記事一覧はこちらから
https://suzukiiichiro.github.io/search/?keyword=Nクイーン問題
エイト・クイーンのプログラムアーカイブ
Bash、Lua、C、Java、Python、CUDAまで!
https://github.com/suzukiiichiro/N-Queens
"""
# -*- coding: utf-8 -*-
"""
N-Queens:ビットボードDFS + 左右対称活用(初手半分+中央列)
===========================================================
ファイル: 06Py_bitboard_sym_half.py
作成日: 2025-10-23
概要:
- ビット演算DFSで列・対角衝突を O(1) 判定。
- 対称活用: 1行目は「左半分のみ」を探索し、探索後に ×2。
奇数 N は中央列を別途探索(中央は左右対称に含まれないため ×2 しない)。
- 本段階では Unique は未算出(0のまま)。Total は正確。
実装の要点(実ソース引用):
- 可置ビット集合: `bitmap = mask & ~(left | down | right)`
- LSB 抽出: `bit = -bitmap & bitmap`
- 次行への伝播: `self._dfs(row+1, (left|bit)<<1, (down|bit), (right|bit)>>1)`
- 初手半分: `for col in range(size//2): ...; self.total *= 2`
- 中央列(奇数N): `if (size & 1) == 1: col = size//2; ...`(×2なし)
注意/メモ:
- Python int は無限長だが、Codon 等の固定幅では `mask` による幅制約が重要。
- (left|down|right) は毎手 `mask` と AND を取るので、シフト外ビットは自然に落ちる。
- Unique(COUNT2/4/8)は未実装。次段で symmetryops / 分類導入。
出力:
N, Total, Unique(=0), 経過時間(ms相当)を表形式で N=4..18 で出力。
著者: suzuki/nqdev
ライセンス: MIT(必要に応じて変更)
仕上げのレビュー(要点)
良い点
初手半分+中央列のハンドリングが教科書どおりで、self.total *= 2 の位置も正しい。
DFS核が最小・明快(bitmap / bit / ^= / <<1 >>1 の定石を踏襲)。
mask を都度計算せず初期化で1回だけ作るのは◎。
注意点 / 次の一手
Unique の導入:COUNT2/4/8 を返す symmetryops()(回転・反転の辞書順最小チェック)をビットボード版にも追加予定。
半分探索との整合を保つなら、初手半分+中央列は継続し、末端で unique += 1; total += coeff に変更。
Codon 固定幅:Codon で 64bit 想定なら size <= 32(~64) で使い分け、mask を型に合わせて明示。
並列化:初手列ごとの DFS を分割して @par or multiprocessing で並列実行しやすい構造。
fedora$ codon build -release 06Py_bit_mirror_codon.py && ./06Py_bit_mirror_codon
N: Total Unique hh:mm:ss.ms
4: 2 0 0:00:00.000
5: 10 0 0:00:00.000
6: 4 0 0:00:00.000
7: 40 0 0:00:00.000
8: 92 0 0:00:00.000
9: 352 0 0:00:00.000
10: 724 0 0:00:00.000
11: 2680 0 0:00:00.001
12: 14200 0 0:00:00.003
13: 73712 0 0:00:00.029
14: 365596 0 0:00:00.138
15: 2279184 0 0:00:00.848
16: 14772512 0 0:00:05.327
fedora$
"""
from datetime import datetime
from typing import Optional
class NQueens06:
"""
ビットボードDFSに初手左右対称の削減(半分探索+奇数の中央列)を組み合わせた Total 計数器。
構成:
- size, mask: 盤サイズと下位 N ビットが 1 のマスク(例: N=8→0b11111111)
- total : 全解数(対称含む)
- unique : 本段では未算出(0)
特徴(引用):
- DFS核: `bitmap = mask & ~(left | down | right)` → `bit = -bitmap & bitmap`
- 伝播: `left<<1`, `down`そのまま, `right>>1`
- 初手半分: `for col in range(size//2): ...; self.total *= 2`
- 奇数中央: `if (size & 1) == 1: col = size//2; ...`(倍化しない)
"""
# --- 結果/設定(Codon 向けに先頭で宣言) ---
total:int
unique:int
size:int
mask:int
def __init__(self)->None:
"""
役割:
インスタンス生成のみ。実際の初期化は solve(size) 内で行う。
注意:
- solve(size) 呼び出し前に内部DFSを直接使わないこと。
"""
# 実体は solve() 呼び出し時に設定
pass
def _dfs(self,row:int,left:int,down:int,right:int)->None:
"""
役割:
ビット演算によるバックトラックの中核。行 row にクイーンを1つ置き、再帰で次行へ。
停止条件(引用):
`if row == self.size: self.total += 1; return`
コア(引用):
- 可置集合: `bitmap = self.mask & ~(left | down | right)`
- LSB抽出: `bit = -bitmap & bitmap`
- 候補消費: `bitmap ^= bit`
- 伝播: `self._dfs(row+1, (left|bit)<<1, (down|bit), (right|bit)>>1)`
注意:
- `mask` によって盤外ビットは自然に落ちる(幅管理)。
- Python ではオーバーフローはないが、Codon 等ではビット幅前提に一致させること。
"""
if row==self.size:
self.total+=1
return
bitmap:int=self.mask&~(left|down|right)
while bitmap:
bit:int=-bitmap&bitmap # LSB を抽出
bitmap^=bit # (= bitmap & ~bit)
self._dfs(row+1,
(left|bit)<<1,
(down|bit),
(right|bit)>>1)
def solve(self,size:int)->None:
"""
役割:
盤サイズ size を設定し、初手左右対称を用いた半分探索+中央列特別処理で Total を計数。
初期化(引用):
`self.size = size; self.mask = (1 << size) - 1; self.total = 0; self.unique = 0`
手順(引用):
- 左半分のみ探索(列 0..size//2-1):
`for col in range(half): bit = 1 << col; self._dfs(1, bit<<1, bit, bit>>1)`
→ 探索完了後に `self.total *= 2`
- 奇数 N の中央列:
`if (size & 1) == 1: col = half; bit = 1 << col; self._dfs(1, bit<<1, bit, bit>>1)`
(中央は左右対称に含まれないため倍化しない)
正当性メモ:
- 左右反転で 1手目の対称解が対応付くため、左半分のみの探索で網羅できる。
- 中央列(奇数N)は反転しても同一配置になるため、独立に1回だけ追加。
"""
self.size=size
self.mask=(1<<size)-1
self.total=0
self.unique=0 # 本段では未算出
# 左半分のみ(0..size//2-1)
half:int=size//2
for col in range(half):
bit=1<<col
self._dfs(1,bit<<1,bit,bit>>1)
self.total*=2
# 奇数 N の中央列(左右対称と同一にはならない)
if (size&1)==1:
col=half
bit=1<<col
self._dfs(1,bit<<1,bit,bit>>1)
def main(self)->None:
"""
役割:
N=4..18 を連続実行し、Total/Unique/経過時間を表形式で出力。
出力(引用):
`print(" N: Total Unique hh:mm:ss.ms")`
`print(f"{size:2d}:{self.total:13d}{self.unique:13d}{text:>20s}")`
注意:
- Unique は未算出(0)。次段で COUNT2/4/8 を導入する。
- ベンチ用途では標準出力の行数に注意(I/Oは相対的に高コスト)。
"""
nmin:int=4
nmax:int=18
print(" N: Total Unique hh:mm:ss.ms")
for size in range(nmin,nmax+1):# 18 を含む
start=datetime.now()
self.solve(size)
dt=datetime.now()-start
text=str(dt)[:-3]
print(f"{size:2d}:{self.total:13d}{self.unique:13d}{text:>20s}")
if __name__=='__main__':
NQueens06().main()
📚 関連リンク
Nクイーン問題 過去記事アーカイブ
【過去記事アーカイブ】Nクイーン問題 過去記事一覧
https://suzukiiichiro.github.io/search/?keyword=Nクイーン問題
【Github】エイト・クイーンのソース置き場 BashもJavaもPythonも!
https://github.com/suzukiiichiro/N-Queens
Nクイーン問題(101)Python/Codonで爆速プログラミング コンステレーション+インテグレート
https://suzukiiichiro.github.io/posts/2025-10-27-17-n-queens-suzuki/
Nクイーン問題(100)Python/Codonで爆速プログラミング コンステレーション+マージ
https://suzukiiichiro.github.io/posts/2025-10-27-16-n-queens-suzuki/
Nクイーン問題(99)Python/Codonで爆速プログラミング コンステレーション+最適化
https://suzukiiichiro.github.io/posts/2025-10-27-15-n-queens-suzuki/
Nクイーン問題(98)Python/Codonで爆速プログラミング コンステレーション+並列処理
https://suzukiiichiro.github.io/posts/2025-10-27-14-n-queens-suzuki/
Nクイーン問題(97)Python/Codonで爆速プログラミング コンステレーション
https://suzukiiichiro.github.io/posts/2025-10-27-13-n-queens-suzuki/
Nクイーン問題(96)Python/Codonで爆速プログラミング キャリーチェーン
https://suzukiiichiro.github.io/posts/2025-10-27-12-n-queens-suzuki/
Nクイーン問題(95)Python/Codonで爆速プログラミング ノードレイヤー+対象解除法
https://suzukiiichiro.github.io/posts/2025-10-27-11-n-queens-suzuki/
Nクイーン問題(94)Python/Codonで爆速プログラミング ノードレイヤー+ミラー
https://suzukiiichiro.github.io/posts/2025-10-27-10-n-queens-suzuki/
Nクイーン問題(93)Python/Codonで爆速プログラミング ノードレイヤー
https://suzukiiichiro.github.io/posts/2025-10-27-09-n-queens-suzuki/
Nクイーン問題(92)Python/Codonで爆速プログラミング ビットでミラー+対象解除法
https://suzukiiichiro.github.io/posts/2025-10-27-08-n-queens-suzuki/
Nクイーン問題(91)Python/Codonで爆速プログラミング ビットで対象解除法
https://suzukiiichiro.github.io/posts/2025-10-27-07-n-queens-suzuki/
Nクイーン問題(90)Python/Codonで爆速プログラミング ビットでミラー
https://suzukiiichiro.github.io/posts/2025-10-27-06-n-queens-suzuki/
Nクイーン問題(89)Python/Codonで爆速プログラミング ビットでバックトラック
https://suzukiiichiro.github.io/posts/2025-10-27-05-n-queens-suzuki/
Nクイーン問題(88)Python/Codonで爆速プログラミング 対象解除法
https://suzukiiichiro.github.io/posts/2025-10-27-04-n-queens-suzuki/
Nクイーン問題(87)Python/Codonで爆速プログラミング バックトラック
https://suzukiiichiro.github.io/posts/2025-10-27-03-n-queens-suzuki/
Nクイーン問題(86)Python/Codonで爆速プログラミング ポストフラグ
https://suzukiiichiro.github.io/posts/2025-10-27-02-n-queens-suzuki/
Nクイーン問題(85)Python/Codonで爆速プログラミング ブルートフォース
https://suzukiiichiro.github.io/posts/2025-10-27-01-n-queens-suzuki/
Nクイーン問題(84)Python/Codonで爆速プログラミング
https://suzukiiichiro.github.io/posts/2025-10-24-01-n-queens-suzuki/
Nクイーン問題(83)Python-codon&並列処理で高速化 Constellations
https://suzukiiichiro.github.io/posts/2025-03-11-07-n-queens-suzuki/
Nクイーン問題(82)Python-並列処理で高速化 16Python_carryChain_ProcessPool
https://suzukiiichiro.github.io/posts/2025-03-11-06-n-queens-suzuki/
Nクイーン問題(81)Python-codonで高速化 15Python_carryChain
https://suzukiiichiro.github.io/posts/2025-03-11-05-n-queens-suzuki/
Nクイーン問題(80)Python-並列処理で高速化 14Python_NodeLayer_symmetry_ProcessPool
https://suzukiiichiro.github.io/posts/2025-03-11-04-n-queens-suzuki/
Nクイーン問題(79)Python-codonで高速化 13Python_NodeLayer_symmetry
https://suzukiiichiro.github.io/posts/2025-03-11-03-n-queens-suzuki/
Nクイーン問題(78)Python-codonで高速化 12Python_NodeLayer_mirror
https://suzukiiichiro.github.io/posts/2025-03-11-02-n-queens-suzuki/
Nクイーン問題(77)Python-codonで高速化 11Python_NodeLayer
https://suzukiiichiro.github.io/posts/2025-03-11-01-n-queens-suzuki/
Nクイーン問題(76)Python-並列処理で高速化 10Python_bit_symmetry_ProcessPool
https://suzukiiichiro.github.io/posts/2025-03-10-05-n-queens-suzuki/
Nクイーン問題(75)Python-並列処理で高速化 09Python_bit_symmetry_ThreadPool
https://suzukiiichiro.github.io/posts/2025-03-10-04-n-queens-suzuki/
Nクイーン問題(74)Python-codonで高速化 08Python_bit_symmetry
https://suzukiiichiro.github.io/posts/2025-03-10-03-n-queens-suzuki/
Nクイーン問題(73)Python-codonで高速化 07Python_bit_mirror
https://suzukiiichiro.github.io/posts/2025-03-10-02-n-queens-suzuki/
Nクイーン問題(72)Python-codonで高速化 06Python_bit_backTrack
https://suzukiiichiro.github.io/posts/2025-03-10-01-n-queens-suzuki/
Nクイーン問題(71)Python-codonで高速化 05Python_optimize
https://suzukiiichiro.github.io/posts/2025-03-07-01-n-queens-suzuki/
Nクイーン問題(70)Python-codonで高速化 04Python_symmetry
https://suzukiiichiro.github.io/posts/2025-03-06-02-n-queens-suzuki/
Nクイーン問題(69)Python-codonで高速化 03Python_backTracking
https://suzukiiichiro.github.io/posts/2025-03-06-01-n-queens-suzuki/
Nクイーン問題(68)Python-codonで高速化 02Python_postFlag
https://suzukiiichiro.github.io/posts/2025-03-05-03-n-queens-suzuki/
Nクイーン問題(67)Python-codonで高速化 01Python_bluteForce
https://suzukiiichiro.github.io/posts/2025-03-05-02-n-queens-suzuki/
Nクイーン問題(66)Python-codonで高速化
https://suzukiiichiro.github.io/posts/2025-03-05-01-n-queens-suzuki/
Nクイーン問題(65) N25を解決!事実上の日本一に
https://suzukiiichiro.github.io/posts/2024-04-25-01-n-queens-suzuki/
Nクイーン問題(64)第七章 並列処理 キャリーチェーン NVIDIA CUDA編
https://suzukiiichiro.github.io/posts/2023-08-01-05-n-queens-suzuki/
Nクイーン問題(63)第七章 並列処理 キャリーチェーン NVIDIA CUDA編
https://suzukiiichiro.github.io/posts/2023-08-01-05-n-queens-suzuki/
Nクイーン問題(62)第七章 並列処理 対称解除法 ビットボード NVIDIA CUDA編
https://suzukiiichiro.github.io/posts/2023-08-01-04-n-queens-suzuki/
Nクイーン問題(61)第七章 並列処理 対称解除法 ノードレイヤー NVIDIA CUDA編
https://suzukiiichiro.github.io/posts/2023-08-01-03-n-queens-suzuki/
Nクイーン問題(60)第七章 並列処理 ミラー NVIDIA CUDA編
https://suzukiiichiro.github.io/posts/2023-08-01-02-n-queens-suzuki/
Nクイーン問題(59)第七章 並列処理 ビットマップ NVIDIA CUDA編
https://suzukiiichiro.github.io/posts/2023-08-01-01-n-queens-suzuki/
Nクイーン問題(58)第六章 並列処理 pthread C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-09-n-queens-suzuki/
Nクイーン問題(57)第八章 キャリーチェーン C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-08-n-queens-suzuki/
Nクイーン問題(56)第八章 ミラー C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-06-n-queens-suzuki/
Nクイーン問題(55)第八章 ビットマップ C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-05-n-queens-suzuki/
Nクイーン問題(54)第八章 ビットマップ C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-04-n-queens-suzuki/
Nクイーン問題(53)第八章 配置フラグ C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-03-n-queens-suzuki/
Nクイーン問題(52)第八章 バックトラック C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-02-n-queens-suzuki/
Nクイーン問題(51)第八章 ブルートフォース C言語編
https://suzukiiichiro.github.io/posts/2023-06-28-01-n-queens-suzuki/
Nクイーン問題(50)第七章 マルチプロセス Python編
https://suzukiiichiro.github.io/posts/2023-06-21-04-n-queens-suzuki/
Nクイーン問題(49)第七章 マルチスレッド Python編
https://suzukiiichiro.github.io/posts/2023-06-21-03-n-queens-suzuki/
Nクイーン問題(48)第七章 シングルスレッド Python編
https://suzukiiichiro.github.io/posts/2023-06-21-02-n-queens-suzuki/
Nクイーン問題(47)第七章 クラス Python編
https://suzukiiichiro.github.io/posts/2023-06-21-01-n-queens-suzuki/
Nクイーン問題(46)第七章 ステップNの実装 Python編
https://suzukiiichiro.github.io/posts/2023-06-16-02-n-queens-suzuki/
Nクイーン問題(45)第七章 キャリーチェーン Python編
https://suzukiiichiro.github.io/posts/2023-06-16-01-n-queens-suzuki/
Nクイーン問題(44)第七章 対象解除法 Python編
https://suzukiiichiro.github.io/posts/2023-06-14-02-n-queens-suzuki/
Nクイーン問題(43)第七章 ミラー Python編
https://suzukiiichiro.github.io/posts/2023-06-14-01-n-queens-suzuki/
Nクイーン問題(42)第七章 ビットマップ Python編
https://suzukiiichiro.github.io/posts/2023-06-13-05-n-queens-suzuki/
Nクイーン問題(41)第七章 配置フラグ Python編
https://suzukiiichiro.github.io/posts/2023-06-13-04-n-queens-suzuki/
Nクイーン問題(40)第七章 バックトラック Python編
https://suzukiiichiro.github.io/posts/2023-06-13-03-n-queens-suzuki/
Nクイーン問題(39)第七章 バックトラック準備編 Python編
https://suzukiiichiro.github.io/posts/2023-06-13-02-n-queens-suzuki/
Nクイーン問題(38)第七章 ブルートフォース Python編
https://suzukiiichiro.github.io/posts/2023-06-13-01-n-queens-suzuki/
Nクイーン問題(37)第六章 C言語移植 その17 pthread並列処理完成
https://suzukiiichiro.github.io/posts/2023-05-30-17-n-queens-suzuki/
Nクイーン問題(36)第六章 C言語移植 その16 pthreadの実装
https://suzukiiichiro.github.io/posts/2023-05-30-16-n-queens-suzuki/
Nクイーン問題(35)第六章 C言語移植 その15 pthread実装直前版完成
https://suzukiiichiro.github.io/posts/2023-05-30-15-n-queens-suzuki/
Nクイーン問題(34)第六章 C言語移植 その14
https://suzukiiichiro.github.io/posts/2023-05-30-14-n-queens-suzuki/
Nクイーン問題(33)第六章 C言語移植 その13
https://suzukiiichiro.github.io/posts/2023-05-30-13-n-queens-suzuki/
Nクイーン問題(32)第六章 C言語移植 その12
https://suzukiiichiro.github.io/posts/2023-05-30-12-n-queens-suzuki/
Nクイーン問題(31)第六章 C言語移植 その11
https://suzukiiichiro.github.io/posts/2023-05-30-11-n-queens-suzuki/
Nクイーン問題(30)第六章 C言語移植 その10
https://suzukiiichiro.github.io/posts/2023-05-30-10-n-queens-suzuki/
Nクイーン問題(29)第六章 C言語移植 その9
https://suzukiiichiro.github.io/posts/2023-05-30-09-n-queens-suzuki/
Nクイーン問題(28)第六章 C言語移植 その8
https://suzukiiichiro.github.io/posts/2023-05-30-08-n-queens-suzuki/
Nクイーン問題(27)第六章 C言語移植 その7
https://suzukiiichiro.github.io/posts/2023-05-30-07-n-queens-suzuki/
Nクイーン問題(26)第六章 C言語移植 その6
https://suzukiiichiro.github.io/posts/2023-05-30-06-n-queens-suzuki/
Nクイーン問題(25)第六章 C言語移植 その5
https://suzukiiichiro.github.io/posts/2023-05-30-05-n-queens-suzuki/
Nクイーン問題(24)第六章 C言語移植 その4
https://suzukiiichiro.github.io/posts/2023-05-30-04-n-queens-suzuki/
Nクイーン問題(23)第六章 C言語移植 その3
https://suzukiiichiro.github.io/posts/2023-05-30-03-n-queens-suzuki/
Nクイーン問題(22)第六章 C言語移植 その2
https://suzukiiichiro.github.io/posts/2023-05-30-02-n-queens-suzuki/
Nクイーン問題(21)第六章 C言語移植 その1
N-Queens問://suzukiiichiro.github.io/posts/2023-05-30-01-n-queens-suzuki/
Nクイーン問題(20)第五章 並列処理
https://suzukiiichiro.github.io/posts/2023-05-23-02-n-queens-suzuki/
Nクイーン問題(19)第五章 キャリーチェーン
https://suzukiiichiro.github.io/posts/2023-05-23-01-n-queens-suzuki/
Nクイーン問題(18)第四章 エイト・クイーンノスタルジー
https://suzukiiichiro.github.io/posts/2023-04-25-01-n-queens-suzuki/
Nクイーン問題(17)第四章 偉人のソースを読む「N24を発見 Jeff Somers」
https://suzukiiichiro.github.io/posts/2023-04-21-01-n-queens-suzuki/
Nクイーン問題(16)第三章 対象解除法 ソース解説
https://suzukiiichiro.github.io/posts/2023-04-18-01-n-queens-suzuki/
Nクイーン問題(15)第三章 対象解除法 ロジック解説
https://suzukiiichiro.github.io/posts/2023-04-13-02-nqueens-suzuki/
Nクイーン問題(14)第三章 ミラー
https://suzukiiichiro.github.io/posts/2023-04-13-01-nqueens-suzuki/
Nクイーン問題(13)第三章 ビットマップ
https://suzukiiichiro.github.io/posts/2023-04-05-01-nqueens-suzuki/
Nクイーン問題(12)第二章 まとめ
https://suzukiiichiro.github.io/posts/2023-03-17-02-n-queens-suzuki/
Nクイーン問題(11)第二章 配置フラグの再帰・非再帰
https://suzukiiichiro.github.io/posts/2023-03-17-01-n-queens-suzuki/
Nクイーン問題(10)第二章 バックトラックの再帰・非再帰
https://suzukiiichiro.github.io/posts/2023-03-16-01-n-queens-suzuki/
Nクイーン問題(9)第二章 ブルートフォースの再帰・非再帰
https://suzukiiichiro.github.io/posts/2023-03-14-01-n-queens-suzuki/
Nクイーン問題(8)第一章 まとめ
https://suzukiiichiro.github.io/posts/2023-03-09-01-n-queens-suzuki/
Nクイーン問題(7)第一章 ブルートフォース再び
https://suzukiiichiro.github.io/posts/2023-03-08-01-n-queens-suzuki/
Nクイーン問題(6)第一章 配置フラグ
https://suzukiiichiro.github.io/posts/2023-03-07-01-n-queens-suzuki/
Nクイーン問題(5)第一章 進捗表示テーブルの作成
https://suzukiiichiro.github.io/posts/2023-03-06-01-n-queens-suzuki/
Nクイーン問題(4)第一章 バックトラック
https://suzukiiichiro.github.io/posts/2023-02-21-01-n-queens-suzuki/
Nクイーン問題(3)第一章 バックトラック準備編
https://suzukiiichiro.github.io/posts/2023-02-14-03-n-queens-suzuki/
Nクイーン問題(2)第一章 ブルートフォース
https://suzukiiichiro.github.io/posts/2023-02-14-02-n-queens-suzuki/
Nクイーン問題(1)第一章 エイトクイーンについて
https://suzukiiichiro.github.io/posts/2023-02-14-01-n-queens-suzuki/