Skip to content

Instantly share code, notes, and snippets.

@YuukiToriyama
Created May 20, 2019 13:49
Show Gist options
  • Save YuukiToriyama/bae30a18c976ba4069ccf5278c45caba to your computer and use it in GitHub Desktop.
Save YuukiToriyama/bae30a18c976ba4069ccf5278c45caba to your computer and use it in GitHub Desktop.
二項係数を計算するawkだけのゴリ押しワンライナー
#!/bin/bash
# Usage
# 先頭のecho ""にパスカルの三角形の何段目まで二項係数を計算したいか入力します。
# 8行目行中にある「{print $0}」の部分を削除すれば、パスカルの三角形は表示せずに求めたい段の二項係数のみが表示されるようになります。
# Copyright 2019 YUUKIToriyama All Rights Reserved
echo "10" | awk '{for (n=1; n<=$1; n++){ for (m=1; m<=n; m++){printf "$"m"+$"m+1","} printf "\n" }}' \
| awk 'BEGIN{printf "echo 1 1"}{printf " | awk \047{print $0}END{print 1," $0 "1}\047"}' \
| bash
@YuukiToriyama
Copy link
Author

計算結果

1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1

@YuukiToriyama
Copy link
Author

こっちのほうがエレガント?eval使うのは反則?

eval echo "1" "| awk '{print \$0}END{printf \"1 \"; for (i=1; i<NF; i++) {printf \"%s \", \$i+\$(i+1)} print \"1\"}'"{,,,,,,,,,}

@YuukiToriyama
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment