Drkcore

12 11 2007 perl Tweet

数字のならび

fortranプログラムのインプットファイルを作るスクリプトを書いてて悩んだ。

数字の並びがこんな風にあった場合に

1,3,4,5,7,9,10,11,12,15

を

1 3 -5 7 9 -12 15

みたいに変換するという。要するに数値が3,4,5というふうに3つ以上並ぶ場合には3 -5と省略できるようなヒトにやさしいフォーマットなんだけど。これを数列から作り出すのに結構悩んだ。

my @sort = ();
my @b = ()
my @a = (1,3,4,5,7,9,10,11,12,15)
for(@a,null){if($b[-1]+1 == $_ || @b == 0){push 
@b,$_}else{@b>2?push@sort,($b[0],-$b[-1]):push @sort,@b; @b=($_)}}

for (@a,null)ってなんか気持ち悪いけど、とりあえず。

でもこれって再帰でできないのかな。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021