へのコメント Perl code for marriage proposal
2022-01-30 12:37:03
オリジナルコード
コード出典: http://www.perlmonks.org/index.pl?node_id=384100
BEGIN { $^W = 1; }
use strict 'refs';
my $f = $[;
my $ch = 0;
sub l {
length $_;
}
sub r {
join '', reverse(split(//, $_[0], 0));
}
sub ss {
substr $_[0], $_[1], $_[2];
}
sub be {
$_ = $_[0];
p(ss($_, $f, 1));
$f += l() / 2;
$f %= l();
++$f if $ch % 2;
$ch++;
}
my $q = r("\ntfgpfdfal,thg?bngbjnaxfcixz");
$_ = $q;
$q =~ tr/[]a-z/[]l-p r-za-k/;
my(@ever) = 1 . &l;
my $mine = $q;
sub p {
print @_;
}
be $mine foreach (@ever);
#Turn on the warning switch
BEGIN { $^W = 1; }
#Symbolic reference checking
use strict 'refs';
Index number of the first element in the # array
my $f = $[;
my $ch = 0;
#Note that there is a line break in the string
my $q = r("\ntfgpfdfal,thg?bngbjnaxfcixz");
$_ = $q;
$q =~ tr/[]a-z/[]l-p r-za-k/;
my (@ever) = 1 . &l;
my $mine = $q;
be($mine) foreach (@ever);
#Get the length of the string
sub l {
length $_;
}
#Inverted strings
#join, 0 are used to round up the number and can be omitted
sub r {
join '', reverse( split( //, $_[0], 0 ) );
}
# Extract substrings from strings
sub ss {
substr $_[0], $_[1], $_[2];
}
#output
sub p {
print @_;
}
#Extract a character from the first half and second half of the string alternately and output
sub be {
$_ = $_[0];
p( ss( $_, $f, 1 ) );
$f += l() / 2;
$f %= l();
++$f if $ch % 2;
$ch++;
}
コードリライト
#! /usr/bin/env perl
use strict;
use warnings;
use utf8;
my $pointer = 0;
my $character = 0;
my $string = reverse("\ntfgpfdfal,thg?bngbjnaxfcixz");
$string =~ tr/a-z/l-p r-za-k/;
foreach ( 1 ... length($string) ) {
print substr( $string, $pointer, 1 );
$pointer += length($string) / 2;
$pointer %= length($string);
++$pointer if $character % 2;
$character++;
}
コード出力
コード出典: http://www.perlmonks.org/index.pl?node_id=384100
#! /usr/bin/perl -w
use strict;
my$f= $[;my
$ch=0;sub l{length}
sub r{join"", reverse split
("",$_[$[])}sub ss{substr($_[0])
,$_[1],$_[2])}sub be{$_=$_[0];p
(ss($_,$f,1));$f+=l()/2;$f%=l
();$f++if$ch%2;$ch++}my$q=r
("\ntfgpfdfal,thg?bngbj".
"naxfcixz");$_=$q; $q=~
tr/f[a-z]/ [l-za-k]
/;my@ever=1.. &l
;my$mine=$q
;sub p{
@_;
}
be $mine for @ever
コードリファクタリング
B::Deparse モジュールは、Perl コードの謎を解き明かし、オプティマイザがあなたのコードに対して行う変換を理解するのに役立つ素晴らしいプリンターです。言い換えれば、Perl コードを再生成し、不明瞭な部分を省こうとし、一貫したフォーマットでコードを書き出すのです。
B::Deparseモジュールの使い方の一例です。
コピーコード
コードは以下の通りです。
perl -MO=Deparse heart_raw.pl > heart_deparse.pl
以下のコードを出力してください。
コピーコード
コードは以下の通りです。
BEGIN { $^W = 1; }
use strict 'refs';
my $f = $[;
my $ch = 0;
sub l {
length $_;
}
sub r {
join '', reverse(split(//, $_[0], 0));
}
sub ss {
substr $_[0], $_[1], $_[2];
}
sub be {
$_ = $_[0];
p(ss($_, $f, 1));
$f += l() / 2;
$f %= l();
++$f if $ch % 2;
$ch++;
}
my $q = r("\ntfgpfdfal,thg?bngbjnaxfcixz");
$_ = $q;
$q =~ tr/[]a-z/[]l-p r-za-k/;
my(@ever) = 1 . &l;
my $mine = $q;
sub p {
print @_;
}
be $mine foreach (@ever);
コードコメント
コピーコード
コードは以下の通りです。
#Turn on the warning switch
BEGIN { $^W = 1; }
#Symbolic reference checking
use strict 'refs';
Index number of the first element in the # array
my $f = $[;
my $ch = 0;
#Note that there is a line break in the string
my $q = r("\ntfgpfdfal,thg?bngbjnaxfcixz");
$_ = $q;
$q =~ tr/[]a-z/[]l-p r-za-k/;
my (@ever) = 1 . &l;
my $mine = $q;
be($mine) foreach (@ever);
#Get the length of the string
sub l {
length $_;
}
#Inverted strings
#join, 0 are used to round up the number and can be omitted
sub r {
join '', reverse( split( //, $_[0], 0 ) );
}
# Extract substrings from strings
sub ss {
substr $_[0], $_[1], $_[2];
}
#output
sub p {
print @_;
}
#Extract a character from the first half and second half of the string alternately and output
sub be {
$_ = $_[0];
p( ss( $_, $f, 1 ) );
$f += l() / 2;
$f %= l();
++$f if $ch % 2;
$ch++;
}
コードリライト
コピーコード
コードは以下の通りです。
#! /usr/bin/env perl
use strict;
use warnings;
use utf8;
my $pointer = 0;
my $character = 0;
my $string = reverse("\ntfgpfdfal,thg?bngbjnaxfcixz");
$string =~ tr/a-z/l-p r-za-k/;
foreach ( 1 ... length($string) ) {
print substr( $string, $pointer, 1 );
$pointer += length($string) / 2;
$pointer %= length($string);
++$pointer if $character % 2;
$character++;
}
コード出力
コピーコード
コードは以下の通りです。
kristen, will you marry me?
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン