パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

プログラムの難問に挑む手法2 4色塗り分けアレンジ

2021-07-13 | プログラムをマスター計画2021

今回はうまくいかなかった版、それでも手を動かすと少しは扉が開く話。

実際難問は解けないものも多い、システム開発とかでも、うまくいかないことのほうが多い。

少し前、政府系のシステム開発の案件で柔軟に折衝能力がある方という記述をみて

よほど仕様を振り回す政府方なんだろうなと苦笑いしてしまった。

 

問題はこちら

https://www.codingame.com/training/hard/map-colorations/solution

 

植民地化問題かなと思って入ってみたら 国家4色塗り分け問題のアレンジ版。

よく思いついたなと感心します。さらに解いて問題までもっていくとは...

国家などのリンク情報から何色使ったら何パターン塗り分けられますかという問題です。

 

例によって解けない時は、データの作り方、ループの回し方、さっぱり検討できません。

 

それでもまず、国家を抽出して、国家間のリンクをデータ化します。(11〜18行)

「国家ごとにつながっている国のデータ作っとくとなにかの役に立ちそう」とひらめいて、作ってみます。(19〜21行)

 

わからない時、なにかしら分析系のデータを作っているとひらめきやすい気がします。

 

次に、つながっている国家が同じ国家は同じとみなしていいんじゃないかと爆走しだします。(23行目と冒頭の関数)

あとは、国家数分 指定色の階乗を上から取って完成!(25行目以降)

一問でも解けたので上出来

 

出題者に優しさで一問はそのまま解けました。あと10行ぐらい、なにかひらめけば解けそうではあります。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。