2017-09-26 9 views
1

私はrandom.orgのGCDをrandom.orgを使って計算し、それらの数値をテキストファイルから取得しようとしています。ここでは、前に作成したPRNGを使用して上記を行うプログラムを紹介します。テキストファイルから読み込んで情報を配列に入れよう

#!/usr/bin/perl 
use strict; 
use warnings; 
my $range = 100; 
my $gcdcount = 0; 
sub gcd_iter($$) { 
    my ($u, $v) = @_; 
    while ($v) { 
     ($u, $v) = ($v, $u % $v); 
    } 
    return abs($u); 
} 
for (my $count=0; $count<=5000; $count++) { 
    my $random_numx = int(rand($range)); 
    my $random_numy = int(rand($range)); 
    my @pair = ($random_numx, $random_numy); 
    if (gcd_iter($random_numx, $random_numy) == 1) { 
     $gcdcount++; 
    } 
} 
print "The GCD Count for PRNG #1 is $gcdcount\n"; 

私はかなり正確に同じことをやっていますが、テキストファイルから数値を取得しています。どのように私は行を分割した後にそれらを式に入れるためにそれらの変数を割り当てることができる形式にそれらの番号のペアを取得するのですか?ここで私はこれまで持っているものです。

my $filename = 'xxxxx'; 
open(my $fh, $filename) 
or die "Could not open file '$filename' $!"; 
sub gcd_iter($$) { 
    my ($u, $v) = @_; 
    while ($v) { 
     ($u, $v) = ($v, $u % $v); 
    } 
    return abs($u); 
} 
for (my $count=0; $count<=5000; $count++) { 
    if (gcd_iter($) == 1) { 
     $gcdcount++; 
    } 
} 
while (my $row = <$fh>) { 
    chomp $row; 
    foreach ($row) { 
     my @pair = split('s+', $_);  
    } 
} 

答えて

0

あなたは正しい軌道に乗っているが、Perlの

perldoc -f split 

を入力することによって利益を得ることができる優れた組み込みのドキュメントを持っています。 私はあなたの行に変更になりますへ

foreach ($row) { 
    my @pair = split('s+', $_); 
} 

を:

my @pair = split(/\s+/, $row); 

$pair[0]$pair[1]$num1$num2を設定...または単に使用します。

my ($num1, $num2) = split(/\s+/, $row); 

2を取得しますあなたが直接興味を持っているスカラー。
つまり、行(既に$row)は必要ありません。また、空白の短縮形パターン一致である\sです。 幸運をお楽しみください!

+0

非常に良い答え。しかし、私はあなたが少し逃したと思う。 '@ pair'(または' $ num1'と '$ num2')変数はレキシカルで、何もしません。 OPは実際にそれを使用したり、印刷したりする必要があります。 – simbabque

関連する問題