Очень нравится писать программы на javascript.
По следующим ссылкам вы сможете просмотреть программы:
Решение судоку он-лайн.
Решение кубических уравнений.
Решение уравнений четвёртой степени.
В алгоритм программы, решающей судоку, сначала было внесено такое изменение: на каждом шаге перебора ищутся одиночки (поля, для которых возможен только один кандидат) и скрытые одиночки (если в строке, столбце или блоке одна из цифр встречается только один раз, то она ставится в то поле, в котором встречается, являясь скрытой одиночкой).
Второе усовершенствование алгоритма произошло совсем недавно: сначала будут перебираться кандидаты из столбцов, строк или блоков, в которых заполнено максимальное число полей, то есть 7 полей, потом строки, столбцы или блоки, в которых заполнено 6 полей, и.т.д., в последнюю очередь – пустые строки, столбцы или блоки. Это уменьшило до нескольких секунд зависание браузера по кнопкам «Рекурсия» и «Цикл», для самой сложной судоку, которая оказалась не в примере №4, а в примере №3. Если вы нажмёте на кнопки «Решить судоку», «Решение» , «Анимация 1 ход/сек», то ваш браузер вообще не будет зависать даже на несколько секунд, но вы сможете наблюдать за ходом решения.
Николай Иванович Яцкин критиковал мои программы, решающие кубические уравнения и уравнения четвёртой степени, написанные на Object Pascal, за то, что они, во-первых, выдают приближённый ответ (и при этом совсем нелогично пользоваться точными формулами), во-вторых, не находят рациональные корни этих уравнений. Эти два недостатка я устранил в программах, написанных на javascript.
http://www.ateist.spb.ru/javascript/solution3.htm
http://www.ateist.spb.ru/javascript/solution4.htm
Обратите внимание на программу решения кубических уравнений.
http://www.ateist.spb.ru/javascript/solution3.htm
Если вы введёте такие коэффициенты
f3 = 1
f2 = -13
f1 = 47
f0 = -35
то получите три действительных корня
уравнения
x^3 - 13 x^2 + 47 x - 35 = 0
x1 = 7
x2 = 1
x3 = 5
x1 = 4/3 * sqrt(7) * cos(1/3 * arccos(-10/49 * sqrt(7))) + 13/3
x2 = 4/3 * sqrt(7) * cos(1/3 * arccos(-10/49 * sqrt(7)) + 2/3 * Pi) + 13/3
x3 = 4/3 * sqrt(7) * cos(1/3 * arccos(-10/49 * sqrt(7)) + 4/3 * Pi) + 13/3
Отсюда, например, следует,
4/3 * sqrt(7) * cos(1/3 * arccos(-10/49 * sqrt(7))) + 13/3 = 7
Отсюда можно один арккосинус выразить через другой арккосинус:
arccos(-10/49 * sqrt(7)) = 3 * arccos(2/7 * sqrt(7))
Нельзя ли отсюда вывести какую-нибудь новую тригонометрическую формулу, составить таблицу арккосинусов и т.д? Или уже всё это выведено, но просто я не в курсе?
- Программы на javascript, решающие судоку, кубические уравнения и уравнения четвёртой степени.
( Leave a comment )