*iroi*

mechairoi の Blog

perl

Test::Class でメソッドの単体テストを elisp でさくっと

Test::Class でメソッドの単体テストを vim script でさくっと - #生存戦略 、それは - subtechが便利過ぎる!!!のでemacsでもしたいです. (defun run-perl-method-test () (interactive) (let ((command compile-command)) (save-excursion (when (or (re-se…

Maximum flow (Dinic)

ゼミでやったので, 今更だけど最大フローを実装してみる. O(n^2m)になってるはずだけど長い.. #!/usr/bin/env perl use strict; use warnings; #use Carp::Assert; use Data::Dumper; package Edge; sub new { my ($class, $source, $target, $weight) = @_;…

Problem64

use warnings; use strict; my $ans=0; for(1..10000) { $ans++ if (f($_) % 2 == 1); } print $ans; sub f { my $N = shift; return rec($N, 1, - int(sqrt($N)), 1, {}); } sub rec { no warnings 'recursion'; my ($N, $k, $l, $m, $ht) = @_; my $n_m = …

Project Euler Problem62

借りてきたラクダ本に力をわけてもらった. まだ1章だけど. リストコンテキストはちょっと楽しい. #!/usr/bin/env perl use strict; use warnings; my (%count, %min); for(my $i=1;;$i++) { my $cube = $i**3; my $key = join '', sort $cube =~ /./go; $min…

Perlでパーサーコンビネータもどき

HaskellのMonadをJavaScriptで実装するとしたら - ラシウラ を参考にほとんど写経. #!/usr/bin/env perl use strict; use warnings; sub parse { my ($parser, $input) = @_; return $parser->({ result => [], source => $input, index => 0, }); } sub bin…

Project Euler Problem61

Perlの練習ということで #!/usr/bin/perl use strict; use warnings; my @paths; $paths[$_] = [] for(0..99); push(@{$paths[target($_)]}, [{8 => 1}, [source($_), target($_)]]) for (polygonals(8)); for(3..7) { my @prev = @paths; $paths[$_] = [] f…