Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kawamura-solver
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
adc2019
kawamura-solver
Commits
9605a723
Commit
9605a723
authored
Aug 27, 2019
by
Kento HASEGAWA
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update scripts for adc2019-system
parent
6e51ca5f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
101 additions
and
0 deletions
+101
-0
kwmr_solver_pynq.py
kwmr_solver_pynq.py
+98
-0
main.py
scripts/main.py
+3
-0
No files found.
kwmr_solver_pynq.py
0 → 100644
View file @
9605a723
import
argparse
import
os
import
random
import
subprocess
import
uuid
proc
=
None
stop_flag
=
False
def
stop
():
global
proc
global
stop_flag
stop_flag
=
True
if
not
proc
is
None
:
proc
.
terminate
()
print
(
'stopped'
)
def
solve
(
params
):
global
proc
global
stop_flag
stop_flag
=
False
# 必要な変数があるか確認
assert
(
'problem'
in
params
)
problem
=
params
[
'problem'
]
basedir
=
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
))
pid
=
str
(
uuid
.
uuid4
())
problem_filepath
=
f
'{basedir}/P{pid}.txt'
with
open
(
problem_filepath
,
'w'
)
as
fp
:
fp
.
write
(
problem
)
aid
=
str
(
uuid
.
uuid4
())
solution_filepath
=
f
'{basedir}/A{aid}.txt'
if
os
.
path
.
exists
(
solution_filepath
):
os
.
remove
(
solution_filepath
)
seed
=
random
.
randint
(
0
,
2147483647
)
# seed: uint32_t <= 2147483647
cmds
=
f
'python3 {basedir}/solver_soft/scripts/main.py -p {problem_filepath} -s {seed} -o {solution_filepath}'
.
split
()
proc
=
subprocess
.
Popen
(
cmds
,
stdin
=
subprocess
.
PIPE
,
# stderr=subprocess.PIPE,
# stdout=subprocess.PIPE
)
try
:
proc
.
communicate
(
problem
.
encode
())
status
=
'done'
except
Exception
as
ex
:
status
=
'failed'
finally
:
returncode
=
proc
.
returncode
solution
=
''
if
returncode
==
0
:
status
=
'done'
if
os
.
path
.
exists
(
solution_filepath
):
with
open
(
solution_filepath
,
'r'
)
as
fp
:
solution
=
fp
.
read
()
else
:
status
=
'failed'
else
:
status
=
'failed'
return
{
'status'
:
status
,
'solution'
:
solution
}
def
main
(
args
):
with
open
(
args
[
'problem'
],
'r'
)
as
fp
:
problem
=
fp
.
read
()
params
=
{
'problem'
:
problem
,
'timeout'
:
args
[
'timeout'
]
}
ret
=
solve
(
params
)
print
(
ret
)
if
__name__
==
"__main__"
:
parser
=
argparse
.
ArgumentParser
(
description
=
'Wrapper Script for ADC2019 Solver'
)
parser
.
add_argument
(
'problem'
,
type
=
str
,
help
=
'File path to the problem file'
)
parser
.
add_argument
(
'-t'
,
'--timeout'
,
type
=
int
,
default
=
10
,
help
=
'Timeout for the process of the solver'
)
args
=
vars
(
parser
.
parse_args
())
main
(
args
)
scripts/main.py
View file @
9605a723
import
numpy
as
np
import
numpy
as
np
from
argparse
import
ArgumentParser
from
argparse
import
ArgumentParser
import
sys
import
time
import
time
import
mySolverModule
import
mySolverModule
...
@@ -105,9 +106,11 @@ def main(args):
...
@@ -105,9 +106,11 @@ def main(args):
if
W_ext
[
0
]
>
info
[
'W'
][
0
]
or
H_ext
[
0
]
>
info
[
'H'
][
0
]:
if
W_ext
[
0
]
>
info
[
'W'
][
0
]
or
H_ext
[
0
]
>
info
[
'H'
][
0
]:
print
(
'Fail satisfying constraint T_T'
)
print
(
'Fail satisfying constraint T_T'
)
sys
.
exit
(
1
)
else
:
else
:
print
(
'Satisfy constraint ^_^'
)
print
(
'Satisfy constraint ^_^'
)
if
args
[
'output'
]
is
not
None
:
mySolverModule
.
output_to_file
(
args
[
'output'
],
W_ext
[
0
],
H_ext
[
0
],
info
[
'blocks'
][
0
],
info
[
'line_num'
][
0
],
info
[
'block_info'
],
result
)
if
args
[
'output'
]
is
not
None
:
mySolverModule
.
output_to_file
(
args
[
'output'
],
W_ext
[
0
],
H_ext
[
0
],
info
[
'blocks'
][
0
],
info
[
'line_num'
][
0
],
info
[
'block_info'
],
result
)
sys
.
exit
(
0
)
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment