inputで楽ちん入力、出力行頭に番号ついた!

こんにちは!サキナオコです^^
なんだかあっという間に冬っぽくなりました。
でも今日はあたたかですね。

さて、数独に毒されている私はPythonで使っていない数字を出すコードで、
2点気に入らないところがありました。

1.元々の数字を書き換えるのが面倒くさい
2.実行の数字がどれをどこへ書き写すのか迷子になりがち

前回のコードの上のところの数値を選択して書き換えていました。しかもリストになっているので点と点の狭い間の数字をクリックしなくてはいけないのでした。

↓これをひとつずつクリックして書き換えていました。はまっていなければできない作業。

ya = [0,1,0,2,0,0,0,8,0]
yb = [0,0,4,0,0,8,7,0,0]
yc = [3,0,0,0,9,0,0,0,6]
yd = [0,0,6,0,0,3,0,5,0]
ye = [0,0,0,0,0,0,0,0,0]
yf = [0,7,0,1,0,0,8,0,0]
yg = [9,0,0,0,4,0,0,0,3]
yh = [0,0,2,8,0,0,9,0,0]
yi = [0,5,0,0,0,6,0,2,8]

もはや何のためにPythonを使ったのかわからなくなってきましたので、ここはinputを使うことにしました。

ya = [int(i) for i in list(input("1行目"))]
yb = [int(i) for i in list(input("2行目"))]
yc = [int(i) for i in list(input("3行目"))]
yd = [int(i) for i in list(input("4行目"))]
ye = [int(i) for i in list(input("5行目"))]
yf = [int(i) for i in list(input("6行目"))]
yg = [int(i) for i in list(input("7行目"))]
yh = [int(i) for i in list(input("8行目"))]
yi = [int(i) for i in list(input("9行目"))]

このようにしてみました。っていうかなんでこうなったのか…ああ、続けて入れた数字をリストにするってことか。。

とにかく、1行目とか出るので間違えずに数字も続けて入力できます。

で、2なのですが、これがどうしていいやら探してもなかなか見つからず、何日もかかりました。

いや、すごく単純なことで、答えの前に1から81までの番号をつけたいだけなのですよ、そのやり方が全然見つからないのです。やっと、昨日その方法にたどり着きました。

これです。↓

for ms, i in zip(new_lst,range(1,82)):

    nms=ms[0]+ms[1]

    n_nms = sorted(nms)
    
    ans = set(num)^set(n_nms)

    print(i, ans)

最初の1行目これが解決法でした。

zipというのでまとめるみたいなんですよね。
ちょっとよくわからないですが、まとめてそれぞれfor文で取り出すってことなんでしょうか。
ああ、そうなのかも。。

それで取り出したインデックス0と1を足して、並べ替えて、numとかぶるものを除いて
番号と答えを出力するっていうのを繰り返すってことなのかぁ。
for以下内部に書いてあることをくりかえすってことですね。

for文の使い方がこれではっきりしてよかったです。いろいろ試行錯誤していた時、for文の中にまたfor文入れたらさらに答えから一個ずつ取り出したりすることになったりしていましたが、なるほど、という感じです。

で、結局コードは

ya = [int(i) for i in list(input("1行目"))]
yb = [int(i) for i in list(input("2行目"))]
yc = [int(i) for i in list(input("3行目"))]
yd = [int(i) for i in list(input("4行目"))]
ye = [int(i) for i in list(input("5行目"))]
yf = [int(i) for i in list(input("6行目"))]
yg = [int(i) for i in list(input("7行目"))]
yh = [int(i) for i in list(input("8行目"))]
yi = [int(i) for i in list(input("9行目"))]

num = [i for i in range(0,10)]

lst_yoko = [ya,yb,yc,yd,ye,yf,yg,yh,yi]

lst_tate_a =[i[0] for i in lst_yoko]
lst_tate_b =[i[1] for i in lst_yoko]
lst_tate_c =[i[2] for i in lst_yoko]
lst_tate_d =[i[3] for i in lst_yoko]
lst_tate_e =[i[4] for i in lst_yoko]
lst_tate_f =[i[5] for i in lst_yoko]
lst_tate_g =[i[6] for i in lst_yoko]
lst_tate_h =[i[7] for i in lst_yoko]
lst_tate_i =[i[8] for i in lst_yoko]

lst_tate = [lst_tate_a,lst_tate_b,lst_tate_c,lst_tate_d,lst_tate_e,lst_tate_f,lst_tate_g,lst_tate_h,lst_tate_i]

new_lst = [(x,y) for x in lst_yoko for y in lst_tate]

num = [i for i in range(0,10)]

lst_yoko = [ya,yb,yc,yd,ye,yf,yg,yh,yi]

lst_tate_a =[i[0] for i in lst_yoko]
lst_tate_b =[i[1] for i in lst_yoko]
lst_tate_c =[i[2] for i in lst_yoko]
lst_tate_d =[i[3] for i in lst_yoko]
lst_tate_e =[i[4] for i in lst_yoko]
lst_tate_f =[i[5] for i in lst_yoko]
lst_tate_g =[i[6] for i in lst_yoko]
lst_tate_h =[i[7] for i in lst_yoko]
lst_tate_i =[i[8] for i in lst_yoko]

lst_tate = [lst_tate_a,lst_tate_b,lst_tate_c,lst_tate_d,lst_tate_e,lst_tate_f,lst_tate_g,lst_tate_h,lst_tate_i]

new_lst = [(x,y) for x in lst_yoko for y in lst_tate]

for ms, i in zip(new_lst,range(1,82)):

    nms=ms[0]+ms[1]

    n_nms = sorted(nms)
    
    ans = set(num)^set(n_nms)

    print(i, ans)

となりました。あ、2のコード変数iじゃない方がよかったかも。。

入出力は↓

入力ーーー
1行目340018009
2行目020060410
3行目070900000
4行目400000600
5行目010070040
6行目008000001
7行目000007064
8行目094030020
9行目500600008

出力ーーー
1 {2, 6, 7}
2 {5, 6}
3 {2, 5, 6, 7}
4 {2, 5, 7}
5 {2, 5}
6 {2, 5, 6}
7 {2, 5, 7}
8 {5, 7}
9 {2, 5, 6, 7}
10 {7, 8, 9}
11 {3, 5, 8}
.
中略
.
.
75 {1, 2, 3, 7, 9}
76 {1, 2, 3, 4, 7}
77 {2, 4, 9}
78 {1, 2, 3, 4, 9}
79 {1, 2, 3, 7, 9}
80 {3, 7, 9}
81 {2, 3, 7}

数字が頭についてる!嬉しいっ!
これで番号を書いた紙を見ながら写せば完璧!

これはアナログ。

ああ、でも、同じ太枠内のグループにある数字は手動で消してくださいね。これ忘れると混乱することになります。

「数独に夢中になるのは中高年だ」とか。誰かが言っていました。
はいはい、その通り、それがここにおりますよ。

数独に夢中の中高年のみなさま、このコードをつかって数独を時短で解きましょう!


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


こんにちは!サキナオコです^o^
ごゆっくりどうぞ!

最近の投稿

2022年10月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Categories

Search the website

サキ ナオコのアバター