文字列を斜めに表示する

文字列を斜めに表示する - みずぴー日記 にインスパイヤされて、文字列を斜めにして表示してみます。

awk は文字列操作を得意とする言語のひとつですが、文字列を繰り替えす関数はありません。 そこで、AWK Users JP :: 同じ文字列のn回繰り返しを作る方法 で用いた方法でスペースの繰り返しを行います。

#! /usr/local/bin/nawk -f
# slipe_line.awk
# 文字列を斜めに表示する
# usage: nawk -f slope_line.awk str

BEGIN {
    str = ARGV[1];

    print slope(str);
}

# slope():  文字列を斜めにした文字列を返す
#   in:     文字列 str
#   out:    文字列を斜めにした文字列 ret_str
function slope(str,    len_str, i, ret_str) {
    len_str = length(str);

    for (i = len_str; i >= 1; i--) {
       ret_str = ret_str repeat_str(" ", i - 1) substr(str, i, 1) "\n";
    }

    sub(/\n$/, "", ret_str);

    return ret_str;
}

# repeat_str():     文字列を繰り返した文字列を返す
#   in:     文字列 str
#           繰り返し数 num
#   out:    文字列 str を num 回繰り返した文字列
function repeat_str(str, num,    i, result) {
    for (i = 1; i <= num; i++) {
        result = result str;
    }

    return result;
}

実行してみます。

$ nawk -f slope_line.awk hello
    o
   l
  l
 e
h

元ネタである anarchy golf - slope lines と同じではありません。

参考サイト

tag_nawk.png tag_nawk.png tag_nawk.png tag_nawk.png