2015-02-01から1ヶ月間の記事一覧

Pythonで算数の問題を解く

パスカルの三角形をPythonで書きなおしてみた。 なんかPythonの方が数値計算とか得意っぽいので。 #!/usr/bin/env python import sys def nextPascal(pascal): if len(pascal)==0: return [1] ret = [pascal[0]] ii = 1 while ii

すぐには解けなかったです

悩めるエンジニアの気まぐれ日誌 - ブログさんから、 □□□□□ - □□□□ 3 3 3 3 3 □には1〜9がひとつずつ入るとする の問題を力ずくで解いてみました。 cpanからMath::Combinatoricsをインストールして、 #!/usr/bin/perl -w use strict; use Math::Combinatoric…

[Perl][プログラム] 再帰型だとコードは綺麗なんだけどdeep recursionでエラー吐くのでループに直す。

#!/usr/bin/perl -w use strict; use bigint; # 1 # 1 1 # 1 2 1 # 1 3 3 1 # 1 4 6 4 1 sub nextPascal{ my @pascal = @_; return 1 if !@pascal; my @ret = $pascal[0]; for(my $ii=1; $ii<@pascal; $ii++){ push @ret, $pascal[$ii-1] + $pascal[$ii]; } …

フィボナッチ数を求める関数、Pythonで書いたらPerlの百倍くらい早かった。

4. その他の制御フローツール — Python 3.7.3 ドキュメント ↑を参考にPythonで書きなおしたらPerlの100倍位速い。やっぱりC++には負ける。…Cで書き直すとすごく速くなるのかな。 #!/usr/bin/env python import sys def fib(max): ii,n,m = 0,1,1 while ii

フィボナッチ数を求める関数、Perlで書いたのをそのままC++にしたら200倍速くなったw

C++で多倍長整数ライブラリGMPを使う - 簡潔なQ ↑を参考に(そのままだ)、 Perlで算数 フィボナッチ数 - べれ野日記 ↑をC++で書きなおした。 #include <iostream> #include <gmpxx.h> mpz_class fib(int max){ mpz_class n,m,f; n = 1; m = 1; for(int ii=0; ii</gmpxx.h></iostream>

SL4Aで書いたけどあんまり関係ない

#!/usr/bin/perl -w use android; my $droid = Android->new(); #print "hello\n"; # 1 # 1 1 # 1 2 1 # 1 3 3 1 # 1 4 6 4 1 # - # 0 0 # 0 0+1 1 # 0 0+1 1+2 2 # 0 0+1 1+2 2+3 3 sub pascal{ my ($n) = @_; return 1 if $n eq 0; my @before = pascal($n…

[プログラム][perl]一般項で求めるパターンのフィボナッチ関数

#!/usr/bin/perl -w use strict; use bignum; my ($max) = @ARGV; my $r5 = 5**0.5; my $phy = (1+$r5)/2; my $fib = ($phy**$max - ((-$phy)**(-$max))) / $r5; print "$fib\n"; やはりこちらも大きな数値を食わすと正しい値を返さなかったりする。

これは先程のより前に書いた、コードのシンプルだけど大きい桁まで求められないフィボナッチ関数。

#!/usr/bin/perl -w use strict; use bigint; sub fib{ my ($n) = @_; $n <= 1 ? 1 : fib($n-2)+fib($n-1) } my $f = fib(@ARGV); print "$f\n"; やはり大きな数値を求められないのでは実用性に欠ける…(なんの実用性?)。 またまだバグっているためまた今…

これでフィボナッチ 100000とか求めることができるぜ!

#!/usr/bin/perl -w use strict; use bigint; print sub{ my ($max) = @_; my ($n,$m) = (1,1); my $f; for(my $ii=0;$ii<$max;$ii++){ $f = $n + $m; $n = $m; $m = $f; } $n; }->(@ARGV)."\n";

今日は素因数分解

#!/usr/bin/perl -w use strict; sub primes{ my ($n) = @_; my @searchList = 2..$n; my @primes; while(@searchList and $searchList[@searchList-1] > $n**0.5){ my $prime = shift @searchList; push @primes, $prime; @searchList = grep{$_ % $prime!=…

エラトステネスの篩 - Wikipediaをまっすぐ実装した。つもり。 #!/usr/bin/perl -w use strict; my ($n) = @ARGV; my @searchList = 2..$n; my @primes; while(@searchList and $searchList[@searchList-1] > $n**0.5){ my $prime = shift @searchList; push…