2021-01-01から1年間の記事一覧

Google翻訳で英語の勉強 小村寿太郎

小村寿太郎は宮崎県で生まれた。 Komura Jutaro was born in Miyazaki prefecture.彼はハーバード大学で学んだ。 He studied at Harvard University.その後、彼は外務省に入った。 After that, he entered the Ministry of Foreign Affairs.ロシアが不凍港を…

Haskell入門(再帰)

-- リストの最大の要素を返す -- リストの(先頭の要素)と(2番目以降の最大の要素)のうち、大きいものを返す maximum' :: (Ord a) => [a] -> a maximum' [] = error "empty list" maximum' [x] = x maximum' (x:xs) = max x (maximum' xs)-- xをn個繰り返すリ…

Haskell入門(関数の定義)

パターンマッチ factorial :: Int -> Int factorial 0 = 1 factorial n = n * factorial (n - 1)*Main> factorial 0 1 *Main> factorial 1 1 *Main> factorial 2 2 *Main> factorial 5 120firstLetter :: String -> String firstLetter "" = "empty" firstLe…

Haskell入門(リスト内包表記)

レンジ Prelude> [1..10] [1,2,3,4,5,6,7,8,9,10] Prelude> [1,3..10] [1,3,5,7,9] Prelude> [4,10..100] [4,10,16,22,28,34,40,46,52,58,64,70,76,82,88,94,100] Prelude> [10,9..1] [10,9,8,7,6,5,4,3,2,1] 3の倍数の最初の10個 Prelude> [3,6..3*10] [3,6…

Haskell入門(リスト)

リストの作成 Prelude> [1, 2, 3] [1,2,3] Prelude> 1 : 2 : 3 : [] [1,2,3]リストの連結 Prelude> [1, 2] ++ [3, 4] [1,2,3,4]リストの先頭に要素を追加 Prelude> 1 : [2, 3] [1,2,3]リストの末尾に要素を追加 Prelude> [1, 2] ++ [3] [1,2,3]リストのn番目…

Haskell入門

Haskellの処理系GHCのインストール(Debian系Linuxでの手順) $ sudo apt install ghcバージョン確認 $ ghc -v対話モード(GHCi)の起動 $ ghci対話モードの終了 Prelude> :q Leaving GHCi.以下、対話モードで実行します。 Prelude> 1 + 2 3 Prelude> 3 - 2 1 Pr…

戦前に起きた警察官と軍人のけんか(ゴーストップ事件)

ja.wikipedia.orgゴーストップ事件は、1933年(昭和8年)に大阪府大阪市北区の天六交叉点で起きた陸軍兵と巡査の喧嘩である。それが陸軍と警察の大規模な対立に発展した。「ゴーストップ」とは信号機のこと。満州事変後の大陸での戦争中に起こったこの事件は…

正しい判断とは何か

正しい判断とは何か。正しい情報と正しい論理を使って行われる判断のことか。何が正しい情報であるかをどのように判断するか。 その情報の発信者が信頼できるかどうかで判断するか。 情報の発信者が信頼できるかをどのように判断するか。自分で実験するか観…

自分で判断するとはどういうことか

自分で判断するとはどういうことか。他人の意見を信頼することは、自分で判断することなのか。信頼できる人を選び、その人の意見に従うことは、自分で判断することなのか。自分が作った人工知能の判断に従うことは、自分で判断することなのか。自分が作った…

Windows用の日本語を含むZIPファイルをLinuxで文字化けさせずに解凍する方法(unarを使う)

unarを使う $ sudo apt install unar $ unar file.zip

PythonのNumPyのndarrayで各列の合計と平均と各行の相関を計算する

$ cat data.csv 8,9,6,2,9,3,8,4,1,9 5,5,4,2,6,3,5,2,2,6 2,2,5,5,2,5,4,4,7,4import numpy as np data = np.loadtxt('data.csv', delimiter=',') print(data) print(type(data)) print('列の合計', np.sum(data, axis=0)) print('列の平均', np.mean(data,…

Project Euler Problem 36

Python 方法1 1から100万の数について、 10進数と2進数で回文数であるか調べる。偶数は2進数で1の位が0になり、回文数にならないので、 奇数だけ調べればよい。 def is_palindromic_base10(n): s = str(n) return s == s[::-1] def is_palindromic_base2(n):…

円周率の計算(円に内接する多角形と外接する多角形の周囲の長さを使う)

下記のページを参考にしました https://w3e.kanazawa-it.ac.jp/e-scimath/contents/t16/textbook_t16_all.pdf円に内接する正n角形の周の長さと、 円に外接する正n角形の周の長さとから、 円に内接する正2n角形の周の長さと、 円に外接する正2n角形の周の長さ…

円周率の計算(円に内接する多角形の周囲の長さを使う)

半径が1の円に内接する正1万角形の周囲の長さを使って求める。 それが2πに近くなるので、2で割る。Python import math #半径が1の円に内接する正n角形の1辺の長さを求める #頂角がth、等しい2辺の長さが1の二等辺三角形の底辺の長さを求める def length_of_b…

Project Euler Problem 33

該当する場合は、 分子の1の位の数と、分母の10の位の数が同じで、 それを除去する場合のみであるが、 なぜそうなのかは、分からない。Python from fractions import Fraction def is_digit_cancelling(nu, de): nu_10, nu_1 = divmod(nu, 10) de_10, de_1 =…

Project Euler Problem 32

3個の数を a * b = c a とする3個の数の桁数について、成立する場合は下記の2通り (aの桁数, bの桁数, cの桁数) (1, 4, 4) (2, 3, 4)理由は、 (1) aが1桁の場合(1-1) bが3桁の場合 cが5桁にならなければならない (なぜなら、aの桁数 + bの桁数 + cの桁数 = 9…

Project Euler Problem 31

Python coins = (1, 2, 5, 10, 20, 50, 100, 200) memo = {} def first_denomination(kinds_of_coins): return coins[kinds_of_coins - 1] def count_change(amount, kinds_of_coins): if (amount, kinds_of_coins) in memo: return memo[(amount, kinds_of_…

Project Euler Problem 30

7桁の数の各桁の5乗の和の最大値は 9^5 * 7 = 413343 (9999999のとき)であり 7桁にならないので、 6桁の数まで調べればいいらしい。正確には、354294(=9^5 * 6)まで調べればよさそうPython def sum_of_fifth_power_of_digits(n): digits = map(int, str(n)) …

Project Euler Problem 29

Python answer = set() for a in range(2, 101): for b in range(2, 101): answer.add(a ** b) print(len(answer)) print(len({i**j for i in range(2,101) for j in range(2,101)}))

Project Euler Problem 28

Python # n×nの一番外側の4個の数の和を返す def sum_of_group(n): last_num = n * n # 4個の数の最大値 diff = n - 1 # 4個の数の差 return (last_num + (last_num - diff) + (last_num - diff * 2) + (last_num - diff * 3)) answer = 1 for n in range(3,…

Project Euler Problem 27

Python def is_prime(n): if n < 2: return False d = 2 while d * d <= n: if n % d == 0: return False d += 1 return True def quadratic_func(a, b): return (lambda n: n * n + a * n + b) def len_of_prime_sequence(func): n = 0 while is_prime(func…

Project Euler Problem 24

Python import itertools a = list(itertools.permutations(range(10)))[1000000 - 1] print(''.join(list(map(str, a))))

PythonのpyocrでPDFの特定の位置から文字列を読み取って、そのファイル名を変更する

前提 PDFファイルが「pdf」ディレクトリに保存されている。 読み取る文字列は英数字である。 読み取る文字列はPDFの1ページ目に書かれている。 import pdf2image import pyocr import pyocr.builders import glob import os import pprint for file in glob.…

Pythonのpdf2imageでPDFを画像に変換する

PDFをページごとに画像ファイルに保存する import pdf2image # PDFのページごとの画像データのリストが得られる img_list = pdf2image.convert_from_path('test.pdf') for idx, img in enumerate(img_list): img.save(str(idx) + '.png')

LinuxでTesseractを使って画像ファイルに書かれたテキストデータをテキストファイルに出力する

Tesseractのインストール $ sudo apt install tesseract-ocr $ sudo apt install libtesseract-dev 日本語の訓練済みモデルのインストール $ sudo apt install tesseract-ocr-jpn tesseract-ocr-jpn-vert $ sudo apt install tesseract-ocr-script-jpan tess…

Project Euler Problem 23

Python def sum_of_divisors(n): s = 1 i = 2 while i * i <= n: if n % i == 0: if i * i == n: s += i else: s += i + n // i i += 1 return s def is_abundant(n): return sum_of_divisors(n) > n LIMIT = 28123 abundant_list = list(filter(is_abundant…

Project Euler Problem 22

Python def name_score(name): return sum(map((lambda c: ord(c) - 64), name)) f = open('p022_names.txt', 'r') name_list = list(map((lambda s: s.strip('"')), f.read().split(','))) f.close() name_list.sort() print(sum([(idx + 1) * name_score(n…

Project Euler Problem 21

Python def sum_of_divisors(n): if n == 1: return 0 s = 1 i = 2 while i * i <= n: if n % i == 0: if i * i == n: s += i else: s += i + n // i i += 1 return s def is_amicable(n): m = sum_of_divisors(n) if n != m: if sum_of_divisors(m) == n: r…

Project Euler Problem 20

Python import math print(sum(map(int, str(math.factorial(100)))))

Project Euler Problem 19

Python import datetime answer = 0 for y in range(1901, 2001): for m in range(1, 13): if datetime.date(y, m, 1).weekday() == 6: answer += 1 print(answer)