パスワードを忘れた? アカウント作成
9843070 journal
日記

taggaの日記: ああ Perl 忘れてる 3

日記 by tagga

最近、自分で書くのは Lua なので、 Perl の文法がぱっと出て来ない……。

Perlで相補鎖を返す関数を短く書くというのが、目に入ってしまった。 ループ削るなら map でしょということで、 ご希望らしい実質 1行。

sub _reverse {
    return join('', map { {c => 'g', g => 'c', a => 't', t => 'a'}->{lc($_)} or '' } split(//, shift));
}

強引に書いたけど、なんか楽しくない……。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • があれで、困り者ですよperlは。eqだのneだの、もートラップ以外の何者でもなゐ。

    # せめてrubyを使っておけばと、15年程過去を後悔してますぅ…。
  • by taka2 (14791) on 2013年08月21日 21時05分 (#2445461) ホームページ 日記

    リンク先のコードと日記のコードでは変換結果が異なるので、
    どっちが正しいのか相補鎖ってものを理解せずに書きましたが、
    日記のコードと同じ変換をするなら、

    sub _reverse { $_=shift; tr/CGATcgat/gctagcta/; return $_;}

    って感じですかね。

    • by hahahash (41409) on 2013年08月21日 21時25分 (#2445476) 日記

      Perlといえば正規表現だよな。
      まですぐに思いついたけど、trのことをすっかり忘れていたので

      s/./({c,g,g,c,a,t,t,a})->{lc $&}/ge;

      みたいなコードを書きかけていました。

      #SQLならtranslateでやれるな、とまで思いながらも、trは思い出さない自分

      親コメント
typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...