8queen.html (javascript) ¶
λͺ¨λ λΆλ€μ΄ C/C++ μλλ©΄ νμ΄μ μ΄λΌ, Cλ‘ ν κΉ νλ€κ° μ’ νΉμ΄νκ² μλ°μ€ν¬λ¦½νΈλ₯Ό μ¨λ΄€μ΅λλ€.
μ²μμ 2μ°¨μ λ°°μ΄ λ©λͺ¨λ¦¬ 곡κ°μ λκ³ λ©λͺ¨λ¦¬ μμ 체ν¬ν΄ κ°λ©° 루νλ₯Ό λλ¦΄κΉ νλ€κ° μκ°μ λ°κΏμ μ¬κ·νΈμΆμ μ΄μ©νκ² λμμ΅λλ€. 첫 λ¬Έμ μμ μΌλ¨ μ μΌ μ²« νΈμ 무쑰건 (0,0) μ΄λΌκ³ κ³ μ νκ³ μ¬κ·λ₯Ό λλ²μ§Έ νΈλΆν° λλ Έλλ°, μ€νλ € λμ€μ μ΄ μκ°μ΄ λλ²μ§Έ λ¬Έμ νλ λ± νκΈμλ§ λ°κΏμ μ μμ΄ λλ κ²μ κ°λ₯μΌ νκ² κ°μ΅λλ€.
μλ 첫λ²μ§Έ ν΄λ²μ, νκ°λ§ λ½λ μ§, μλλ©΄ λ€λ½λ μ§ λμ€ νλμμ΄μΌ νλλ°, κ²°λ‘ μ μΌλ‘λ λ¬Έμ λ₯Ό νκΈ΄ νμ§λ§, μ΄μ μ©‘ν λͺ¨μ΅μ΄ λλ²λ¦¬κ³ λ§μμ΅λλ€.
κΈ°λ³Έ μμ΄λμ΄λ ν λΌμΈμ© μ§νν΄ κ°λ©΄μ νμ¬ λΌμΈ μ μμμ Xμ’νκ°μ λ°κΏκ°λ©° μμ μλ νΈλ€μ μν΄ μνμ λ°λμ§ κ²μ¬ν΄μ μμ ν κ²½μ°μλ κ³μ λ€μ λΌμΈμΌλ‘ μ§ννκ³ , μλ κ²½μ°μλ μ² μνλ κ²μ
λλ€. μνμ¬λΆμ λν΄μλ κ°μ μΈλ‘μ μμ΄κ±°λ, λκ°μ μΈ κ²½μ°λ X, Y μ’νμ ν©κ³Ό μ°¨κ° κ°κ° λμΌν κ²μ΄ μλμ§λ₯Ό μ‘°μ¬νλ κ²μΌλ‘ λ§λ€μμ΅λλ€.
~cpp <script> var positions = [0,0,0,0,0,0,0,0]; function display() { for (var i=0; i<8; i++) document.write(positions[i] + " "); document.write("<br>"); } function safe(line) { for (var i=0; i<line; i++) if (positions[line]==positions[i] || i+positions[i]==line+positions[line] || i-positions[i]==line-positions[line]) return false; return true; } function check(line) { if (line>=8) { display(); return; } for (var i=0; i<8; i++) { positions[line] = i; if (safe(line)) check(line+1); } } check(1); </script>
κ²°κ³Όλ¬Ό νμΈνκΈ° μ’κ² display λΆλΆμ μ½κ° μμ ν΄λ΄€μ΅λλ€. --1002
~cpp <script> var positions = [0,0,0,0,0,0,0,0]; function printBefore(position) { for (var j=0; j<position; j++) document.write("X"); } function printAfter(position) { for (var j=position+1;j<8; j++) document.write("X"); } function display() { for (var i=0; i<8; i++) { printBefore(positions[i]); document.write("O"); printAfter(positions[i]); document.write("<br>"); } document.write("<br>"); } function safe(line) { for (var i=0; i<line; i++) if (positions[line]==positions[i] || i+positions[i]==line+positions[line] || i-positions[i]==line-positions[line]) return false; return true; } function check(line) { if (line>=8) { display(); return; } for (var i=0; i<8; i++) { positions[line] = i; if (safe(line)) check(line+1); } } check(1); </script>