I koʻu manaʻo, ma ka māhele ʻōlelo Lūkini o ka Pūnaewele, ʻaʻole lawa ka uhi ʻia o ke kumuhana o ka hōʻoia maʻamau, a aia nō ka nele o nā hiʻohiʻona maʻalahi a maopopo.
E hāʻawi wau i kumu hoʻohālike mai kahi kumu ʻē aʻe, a hoʻohui i kaʻu hopena ponoʻī i ka pilikia kaulana o ka hele ʻana i kahi ʻīlio hae, kahi kao a me kahi kāpeti i kēlā ʻaoʻao o ka muliwai.
Akā ʻo ka mea mua, e wehewehe pōkole wau i ke ʻano o ka hōʻoia a me ke kumu e pono ai.
ʻO ka hōʻoia maʻamau ʻo ia ka nānā ʻana i kahi papahana a i ʻole algorithm e hoʻohana ana i kekahi.
Pono kēia e hōʻoia i ka hana ʻana o ka papahana e like me ka mea i manaʻo ʻia a no ka hōʻoia ʻana i kona palekana.
ʻO ka hōʻoia maʻamau ka mea ikaika loa e ʻimi a hoʻopau i nā nāwaliwali: hiki iā ʻoe ke ʻimi i nā lua āpau a me nā pōpoki i loko o kahi papahana, a i ʻole e hōʻoia ʻaʻole lākou.
He mea pono e hoʻomaopopo i kekahi mau mea hikiʻole kēia, e like me ka pilikia o nā mō'īwahine 8 me ka laulā papa o 1000 squares: hiki mai nā mea a pau i ka paʻakikī algorithmic a iʻole ka pilikia hoʻomaha.
Eia naʻe, i kekahi hihia, e loaʻa kekahi o nā pane ʻekolu: pololei ka papahana, hewa ʻole, a ʻaʻole hiki ke helu i ka pane.
Inā ʻaʻole hiki ke loaʻa kahi pane, hiki pinepine ke hana hou i nā ʻāpana maopopo ʻole o ka papahana, e hōʻemi ana i kā lākou algorithmic paʻakikī, i mea e loaʻa ai kahi pane ʻae a ʻaʻole paha.
A hoʻohana ʻia ka hōʻoia maʻamau, no ka laʻana, i ka Windows kernel a me Darpa drone operating system, e hōʻoia i ka pae kiʻekiʻe o ka pale.
E hoʻohana mākou i ka Z3Prover, kahi mea hana ikaika loa no ka hōʻoia ʻana i ka theorem automated a me ka hoʻoponopono hoʻohālikelike.
Eia kekahi, hoʻoponopono ʻo Z3 i nā hoʻohālikelike, ʻaʻole koho i kā lākou waiwai me ka hoʻohana ʻana i ka ikaika.
ʻO ia ke ʻano hiki ke loaʻa ka pane, ʻoiai i nā hihia i loaʻa 10^100 hui pū ʻana o nā koho hoʻokomo.
Akā ʻo kēia wale nō ma kahi o hoʻokahi haneli mau manaʻo hoʻokomo o ke ʻano Integer, a ʻike pinepine ʻia kēia ma ka hana.
Pilikia e pili ana i 8 mau mōʻīwahine (Lawe ʻia mai ka ʻōlelo Pelekania
# We know each queen must be in a different row.
# So, we represent each queen by a single integer: the column position
Q = [ Int('Q_%i' % (i + 1)) for i in range(8) ]
# Each queen is in a column {1, ... 8 }
val_c = [ And(1 <= Q[i], Q[i] <= 8) for i in range(8) ]
# At most one queen per column
col_c = [ Distinct(Q) ]
# Diagonal constraint
diag_c = [ If(i == j,
True,
And(Q[i] - Q[j] != i - j, Q[i] - Q[j] != j - i))
for i in range(8) for j in range(i) ]
solve(val_c + col_c + diag_c)
Ke holo nei iā Z3, loaʻa iā mākou ka hopena:
[Q_5 = 1,
Q_8 = 7,
Q_3 = 8,
Q_2 = 2,
Q_6 = 3,
Q_4 = 6,
Q_7 = 5,
Q_1 = 4]
Hoʻohālikelike ʻia ka pilikia mōʻī wahine me kahi papahana e hoʻokomo i nā hoʻonohonoho o 8 mau mōʻī wahine a hoʻopuka i ka pane inā ua hahau nā mōʻī wahine kekahi i kekahi.
Inā mākou e hoʻoponopono i kahi papahana me ka hoʻohana ʻana i ka hōʻoia maʻamau, a laila e hoʻohālikelike ʻia i ka pilikia, pono mākou e hana i hoʻokahi ʻanuʻu hou i ke ʻano o ka hoʻololi ʻana i ka code program i kahi hoohalike: e huli like ia me kā mākou ( ʻoiaʻiʻo, inā ua kākau pololei ʻia ka papahana).
Aneane like ka mea i ka hihia o ka ʻimi ʻana i nā nāwaliwali: hoʻonohonoho wale mākou i nā kūlana hoʻopuka e pono ai mākou, no ka laʻana, ka password admin, hoʻololi i ke kumu a i ʻole code decompiled i nā hoʻohālikelike kūpono me ka hōʻoia, a laila loaʻa i kahi pane e pili ana i ka mea. pono e hāʻawi ʻia nā ʻikepili i mea hoʻokomo e hoʻokō ai i ka pahuhopu.
I koʻu manaʻo, ʻoi aku ka hoihoi o ka pilikia e pili ana i ka ʻīlio hae, ke kao a me ke kāpeti, ʻoiai ʻo ka hoʻoponopono ʻana i ia mea he nui (7) mau ʻanuʻu.
Inā hoʻohālikelike ka pilikia mōʻīwahine i ka hihia kahi hiki iā ʻoe ke komo i kahi kikowaena me ka hoʻohana ʻana i kahi noi GET a POST hoʻokahi, a laila hōʻike ka ʻīlio hae, kao a me ke kāpeti i kahi hiʻohiʻona mai kahi ʻano paʻakikī a ākea, kahi e hiki ai ke hoʻokō wale ʻia ka pahuhopu. ma kekahi mau noi.
Hoʻohālikelike kēia, no ka laʻana, i kahi hiʻohiʻona kahi e pono ai ʻoe e ʻimi i kahi injection SQL, e kākau i kahi faila ma ia mea, a laila e hoʻokiʻekiʻe i kāu mau kuleana a laila loaʻa kahi ʻōlelo huna.
Nā kūlana o ka pilikia a me kona hoʻonāPono ka mea mahiʻai e lawe i ka ʻīlio hae, ke kao a me ke kāpeti ma kēlā ʻaoʻao o ka muliwai. He waapa ko ka mea mahiai e hiki ai ke hookomo i hookahi mea wale no, koe wale no ka mahiai. ʻAi ka ʻīlio hae i ke kao a ʻai ke kao i ke kāpena inā haʻalele ka mahiʻai iā lākou me ka mālama ʻole ʻia.
ʻO ka hopena, aia ma ka ʻanuʻu 4 pono e hoʻihoʻi ka mahiʻai i ke kao.
I kēia manawa, e hoʻomaka kākou e hoʻoponopono iā ia me ka programmatically.
E hōʻike kākou i ka mahiʻai, ka ʻīlio hae, ke kao, a me ke kāpeti ma ke ʻano he 4 mau hoʻololi e lawe ana i ka waiwai he 0 a i ʻole 1 wale nō.
import json
from z3 import *
s = Solver()
Num= 8
Human = [ Int('Human_%i' % (i + 1)) for i in range(Num) ]
Wolf = [ Int('Wolf_%i' % (i + 1)) for i in range(Num) ]
Goat = [ Int('Goat_%i' % (i + 1)) for i in range(Num) ]
Cabbage = [ Int('Cabbage_%i' % (i + 1)) for i in range(Num) ]
# Each creature can be only on left (0) or right side (1) on every state
HumanSide = [ Or(Human[i] == 0, Human[i] == 1) for i in range(Num) ]
WolfSide = [ Or(Wolf[i] == 0, Wolf[i] == 1) for i in range(Num) ]
GoatSide = [ Or(Goat[i] == 0, Goat[i] == 1) for i in range(Num) ]
CabbageSide = [ Or(Cabbage[i] == 0, Cabbage[i] == 1) for i in range(Num) ]
Side = HumanSide+WolfSide+GoatSide+CabbageSide
ʻO ka helu ka helu o nā ʻanuʻu e pono ai e hoʻoponopono. Hōʻike kēlā me kēia ʻanuʻu i ke ʻano o ka muliwai, ka waʻa a me nā mea āpau.
I kēia manawa, e koho kāua iā ia me ka palena, e lawe i 10.
Hōʻike ʻia kēlā me kēia hui i 10 kope - ʻo ia kona waiwai ma kēlā me kēia o nā ʻanuʻu 10.
I kēia manawa e hoʻonohonoho i nā kūlana no ka hoʻomaka a me ka hoʻopau.
Start = [ Human[0] == 0, Wolf[0] == 0, Goat[0] == 0, Cabbage[0] == 0 ]
Finish = [ Human[9] == 1, Wolf[9] == 1, Goat[9] == 1, Cabbage[9] == 1 ]
A laila hoʻonoho mākou i nā kūlana kahi e ʻai ai ka ʻīlio hae i ke kao, a i ʻole ke kao e ʻai ai i ke kāpeti, e like me nā kaohi i ka hoʻohālikelike.
(Ma ke alo o kahi mahiʻai, hiki ʻole ke huhū)
# Wolf cant stand with goat, and goat with cabbage without human. Not 2, not 0 which means that they are one the same side
Safe = [ And( Or(Wolf[i] != Goat[i], Wolf[i] == Human[i]), Or(Goat[i] != Cabbage[i], Goat[i] == Human[i])) for i in range(Num) ]
A ʻo ka hope, e wehewehe mākou i nā hana āpau a ka mahiʻai i ka wā e hele ai i laila a i hope paha.
Hiki iā ia ke lawe pū me ia i ka ʻīlio hae, ke kao a i ʻole ke kāpeti, ʻaʻole lawe i kekahi, ʻaʻole hoʻi e holo i kēlā me kēia wahi.
ʻOiaʻiʻo, ʻaʻole hiki i kekahi ke hele me ka ʻole o ka mahiʻai.
E hōʻike ʻia kēia e ka ʻoiaʻiʻo e hiki ke ʻokoʻa kēlā me kēia moku'āina o ka muliwai, ka waʻa a me nā hui mai ka mea ma mua ma kahi ala palena ʻole.
ʻAʻole ʻoi aku ma mua o 2 mau ʻāpana, a me nā palena ʻē aʻe he nui, no ka mea hiki i ka mea mahiʻai ke lawe i hoʻokahi hui i ka manawa a ʻaʻole hiki ke waiho pū ʻia nā mea a pau.
Travel = [ Or(
And(Human[i] == Human[i+1] + 1, Wolf[i] == Wolf[i+1] + 1, Goat[i] == Goat[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] + 1, Goat[i] == Goat[i+1] + 1, Wolf[i] == Wolf[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] + 1, Cabbage[i] == Cabbage[i+1] + 1, Wolf[i] == Wolf[i+1], Goat[i] == Goat[i+1]),
And(Human[i] == Human[i+1] - 1, Wolf[i] == Wolf[i+1] - 1, Goat[i] == Goat[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] - 1, Goat[i] == Goat[i+1] - 1, Wolf[i] == Wolf[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] - 1, Cabbage[i] == Cabbage[i+1] - 1, Wolf[i] == Wolf[i+1], Goat[i] == Goat[i+1]),
And(Wolf[i] == Wolf[i+1], Goat[i] == Goat[i+1], Cabbage[i] == Cabbage[i+1])) for i in range(Num-1) ]
E holo kāua i ka hoʻonā.
solve(Side + Start + Finish + Safe + Travel)
A loaʻa iā mākou ka pane!
Ua loaʻa iā Z3 kahi hoʻonohonoho o nā mokuʻāina e hoʻokō i nā kūlana āpau.
He ʻano hoʻolei ʻehā ʻano o ka manawa-manawa.
E noʻonoʻo kākou i ka mea i hana ʻia.
ʻIke mākou i ka hopena i hala nā mea a pau, i ka manawa mua i hoʻoholo ai kā mākou mahiʻai e hoʻomaha, a ma nā ʻanuʻu 2 mua ʻaʻole ʻo ia e ʻau ma nā wahi āpau.
Human_2 = 0
Human_3 = 0
Hōʻike kēia i ka nui o nā mokuʻāina a mākou i koho ai, a ʻo ka 8 e lawa loa.
I ko mākou hihia, hana ka mahiʻai penei: hoʻomaka, hoʻomaha, hoʻomaha, keʻa i ke kao, keʻa hope, keʻa i ke kāpena, hoʻi me ke kao, keʻa i ka'īlio hae, hoʻi hoʻokahi, hāʻawi hou i ke kao.
Akā i ka hopena ua hoʻoholo ʻia ka pilikia.
#Старт.
Human_1 = 0
Wolf_1 = 0
Goat_1 = 0
Cabbage_1 = 0
#Фермер отдыхает.
Human_2 = 0
Wolf_2 = 0
Goat_2 = 0
Cabbage_2 = 0
#Фермер отдыхает.
Human_3 = 0
Wolf_3 = 0
Goat_3 = 0
Cabbage_3 = 0
#Фермер отвозит козу на нужный берег.
Human_4 = 1
Wolf_4 = 0
Goat_4 = 1
Cabbage_4 = 0
#Фермер возвращается.
Human_5 = 0
Wolf_5 = 0
Goat_5 = 1
Cabbage_5 = 0
#Фермер отвозит капусту на нужный берег.
Human_6 = 1
Wolf_6 = 0
Cabbage_6 = 1
Goat_6 = 1
#Ключевая часть операции: фермер возвращает козу обратно.
Human_7 = 0
Wolf_7 = 0
Goat_7 = 0
Cabbage_7 = 1
#Фермер отвозит волка на другой берег, где он теперь находится вместе с капустой.
Human_8 = 1
Wolf_8 = 1
Goat_8 = 0
Cabbage_8 = 1
#Фермер возвращается за козой.
Human_9 = 0
Wolf_9 = 1
Goat_9 = 0
Cabbage_9 = 1
#Фермер повторно доставляет козу на нужный берег и завершают переправу.
Human_10 = 1
Wolf_10 = 1
Goat_10 = 1
Cabbage_10 = 1
I kēia manawa e ho'āʻo kāua e hoʻololi i nā kūlana a hōʻoia ʻaʻole he hopena.
No ka hana ʻana i kēia, hāʻawi mākou i kā mākou wolf herbivory, a makemake ʻo ia e ʻai i ke kāpeti.
Hiki ke hoʻohālikelike ʻia kēia me ka hihia kahi o kā mākou pahuhopu e hoʻopaʻa i ka noi a pono mākou e hōʻoia i ka loaʻa ʻole o nā loopholes.
Safe = [ And( Or(Wolf[i] != Goat[i], Wolf[i] == Human[i]), Or(Goat[i] != Cabbage[i], Goat[i] == Human[i]), Or(Wolf[i] != Cabbage[i], Goat[i] == Human[i])) for i in range(Num) ]
Hāʻawi ʻo Z3 iā mākou i kēia pane:
no solution
ʻO ia hoʻi, ʻaʻohe ʻano hoʻonā.
No laila, ua hōʻike mākou ma ka papahana i ka hiki ʻole ke hele me ka ʻīlio hae omnivorous me ka pohō ʻole o ka mea mahiʻai.
Inā ʻike ka poʻe i kēia kumuhana he hoihoi, a laila ma nā ʻatikala e hiki mai ana e haʻi aku wau iā ʻoe pehea e hoʻohuli ai i kahi papahana maʻamau a i ʻole hana i kahi hoʻohālikelike kūpono me nā ʻano hana maʻamau, a hoʻoponopono iā ia, a laila e hōʻike ana i nā hiʻohiʻona kūpono a me nā nāwaliwali. ʻO ka mea mua, ma ka hana hoʻokahi, akā hōʻike ʻia ma ke ʻano o kahi papahana, a laila e hoʻopiʻi mālie a neʻe i nā hiʻohiʻona o kēia manawa mai ka honua o ka hoʻomohala polokalamu.
Ua mākaukau ka ʻatikala aʻe:
I loko o laila au e neʻe mai ka hōʻoia maʻamau o nā pilikia i nā papahana, a wehewehe
pehea e hiki ai ke hoʻololi ʻia i mau ʻōnaehana kānāwai maʻamau.
Source: www.habr.com