Microsoft Solitaire Collection

Windowsユーザにはおなじみのゲームかと思うが、この中にイベントというのがあって、大勢が24時間以内に一斉に行ってスコアとタイムを競う。 これに初めてちゃんと参加したところ59万人中で25位だった。本当だろうか。 全ての面をクリアすると、最終的にはタ…

RustでProject Euler (6)

Problem 4 https://projecteuler.net/problem=4PriorityQueueを使うと速いのですが、ここでは、3桁同士の掛け算を全て配列に入れて、降順に並べて、palindromeを探します。 Vec VecはC++のstd::vectorに相当するものです。空の配列を作って、 let mut a: Vec<i32></i32>…

Project Euler 704

https://projecteuler.net/problem=704219着。Problem 701以来の自作問題です。 単純に2の個数がどうなるか知りたくて作った問題です。

RustでProject Euler (5)

Problem 3 https://projecteuler.net/problem=3 関数の返り値の型 こんな感じですね。 fn max_prime(m: i64) -> i64 { ... } これも後ろに書くんですね。 use std::env; fn main() { let args: Vec<String> = env::args().collect(); let n: i64 = args[1].parse().u</string>…

RustでProject Euler (4)

Problem 2 https://projecteuler.net/problem=2 Iterator Pythonならこのようなgeneratorを作りたいかもしれません。 def fibs(): a, b = 0, 1 while True: yield b a, b = b, a+b Rustでは今のところこのような書き方はできないようです。 (Rustはバージョ…

RustでProject Euler (3)

Problem 1 https://projecteuler.net/problem=1 メソッドチェーン この問題は、Pythonならこんな風に書きたいところでしょう。 import sys n = int(sys.argv[1]) s = sum(i for i in range(1, n) if i%3 == 0 or i%5 == 0) print(s) Rustではこういう書き方…

RustでProject Euler (2)

Problem 1 https://projecteuler.net/problem=1 引数 当然1000は固定でなく、引数で指定したいですよね。そのようにコードを変更してみました。 use std::env; fn main() { let args: Vec<String> = env::args().collect(); let n: i64 = args[1].parse().unwrap(); </string>…

RustでProject Euler (1)

いま流行りのRustの勉強のために、RustでProject Eulerを解いていきます。Rustはそんなに簡単ではないです。 install Windows 10のUbuntuに入れます。 ここを参考にしました。 https://doc.rust-jp.rs/book/second-edition/ch01-01-installation.html $ rust…

Project Euler 701

103着。 Problem 678以来の自作問題です。 解くだけなら簡単です。 ただ、10秒程度にするのは面倒。projecteuler.net

Project Euler 700

267着。projecteuler.net記念すべき700問目。 これは易しいが面白い。思いもかけない解法だった。

Project Euler 673

226着。この問題の"Beds and Desks"というタイトルは自分が付けた。 呼び名が無いと不便なので仮に付けたタイトルだったが、それがそのまま使われてしまった。projecteuler.net

Project Euler 688

150着。易しい。伝統的な解法。projecteuler.net

Project Euler 687

119着。 これも単純。 https://projecteuler.net/problem=687

Project Euler 686

269着。 これはやさしい。https://projecteuler.net/problem=686

Project Euler 683

https://projecteuler.net/problem=683115着。 特に難しいことは無い。 sが累積だったら多少難しくなるかもしれないが。

Project Euler 681

https://projecteuler.net/problem=681107着。フォーラムで解けなかった問題、らしい。記憶になかった。 SymPyを使いながら計算をしたら、きれいな形になった。 それを工夫して組んでみたらやけに遅かったので、素直に組んだらPyPyで4分くらいだった。 どう…

[プログラミング]Project Euler 659https://projecteuler.net/problem=659517着。これはすぐに分かる。懐かしい問題に帰着する。 昔この問題の解法を思いついた時、感動したものだったが。

Project Euler 679

https://projecteuler.net/problem=679298着。フォーラムではを提案していたのだが、なぜかになってしまった。簡単すぎる。

JuliaでC++のtemplateのようなものを実現する

Juliaで例えば、グラフのエッジを逆向きにするグラフを作る関数を書くとする。 function main() graph = Dict{Int,Vector{Int}}() for v in 1:3 graph[v] = collect(v+1:4) end println(graph) rev_graph = reverse_graph(graph) println(rev_graph) println…

Project Euler 678

https://projecteuler.net/problem=678夏休み明けで久しぶりの自作問題。 数学寄りの問題で、アルゴリズムを問う場面は無かったと思う。 場合分けが必要。

AtCoder Beginner Contest 138 E

https://atcoder.jp/contests/abc138/tasks/abc138_eなんということもない問題だ。この位置にいる時に、この文字は次にどこにあるかをテーブルにしておけばよい。 しかし、Pythonでどうしても時間切れになる。PyPyでもなぜか速くならない。 じゃあC++で、と…

PythonとPyPyで文字を追加する速度が全然違う

AlignmentのBacktrackのときに、文字を前に追加しなければならないが、当然後ろに追加して最後に文字列を逆にする方が速いと思える。しかし、このようなコードで、 import sys import time def f_add_to_head(N): s = '' for _ in range(N): s = 'c' + s ret…

Project Euler 669

https://projecteuler.net/problem=669203着。 久しぶりにやった。 変わった問題だが、すぐになんとなくわかる。 でも、そこからは怪しい。解けるんだけど、本当にこれでいいのか。 きっちり検証すれば正しいかどうかわかるが、そうしなくてもなんとなく解け…

秀丸で開いたファイルのフォルダにUbuntuを開いて移動する

これは、昔からコマンドプロンプトでよくやっていた。例えばPythonのコードを書いて、さあ実行しようという時に、コマンドプロンプトを起動して、Change Directoryする。しかし、わざわざ分かっているディレクトリに手動で移動するのは面倒ではないか。コマ…

JuliaでProject Euler(22)

Problem 42 https://projecteuler.net/problem=42 function read_names(path) open(path, "r") do fp for line in eachline(fp) return [ s[2:length(s)-1] for s in split(line, ",") ] end end end function is_square(n) return Int(floor(sqrt(n)))^2 ==…

JuliaでProject Euler(21)

Problem 33 https://projecteuler.net/problem=33分数は、次のように書く。 julia> f = 4//6 2//3 julia> typeof(f) Rational{Int64} julia> numerator(f) 2 julia> denominator(f) 3

JuliaでProject Euler(20)

Problem 25 https://projecteuler.net/problem=25 function add(v1, v2) if length(v1) > length(v2) return add(v2, v1) end v3::Array{Int} = [] carry = 0 for k in 1:length(v1) n = v1[k] + v2[k] + carry carry = div(n, 10) d = n % 10 push!(v3, d) …

JuliaでProject Euler(19)

Problem 22 https://projecteuler.net/problem=22 function read_names(path) open(path, "r") do fp for line in eachline(fp) return [ s[2:length(s)-1] for s in split(line, ",") ] end end end function name_score(name) return sum(Int(c)-Int('A')+…

JuliaでProject Euler(18)

Problem 20 https://projecteuler.net/problem=20Problem16とだいたい同じ。Pythonで書くと、 from itertools import * import sys def multiply(v, n): v2 = [] carry = 0 for d in v: carry, r = divmod(d*n+carry, 10) v2.append(r) while carry > 0: car…

JuliaでProject Euler(17)

Problem 17 https://projecteuler.net/problem=17何度も解いているが、一度も最初で正しい答えを出した記憶がない。 できるだけ再帰を使う。 function e017(N) function num_length(n) if haskey(num_letters, n) && n < 100 return length(num_letters[n]) …