わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

組体操・人間ピラミッドの構築手順をRubyで

組体操で,人が乗ることによってかかる荷重を計算するRubyスクリプト(gfload.rb)をもとに,三角錐タイプ(立体型)の人間ピラミッドを対象として,どの列に何人が並び,どんな順番で構築すればいいかを生成する,新たなRubyスクリプト(gf_build.rb)を作成しました.ソースはgistよりご覧ください.
さっそくですが出力です.

$ ruby gf_build.rb -p 4
4段の三角錐タイプのピラミッドをつくるには、13人が協力して行います。
はじめに、1段目で前から1列目の4人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の3人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
3段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
4段目の人が、3段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

$ ruby gf_build.rb -p 5
5段の三角錐タイプのピラミッドをつくるには、22人が協力して行います。
はじめに、1段目で前から1列目の5人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の4人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の4人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
3段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
2段目で前から2列目の3人が並びます。
  中腰の姿勢で、手は、1段目の2列目の人の背中に乗せ、足は地面です。
4段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、3段目で前から1列目の人の背中に乗せ、足は、2段目で前から2列目の人の背中(肩)の上です。
5段目の人が、4段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

$ ruby gf_build.rb -p 6
6段の三角錐タイプのピラミッドをつくるには、37人が協力して行います。
はじめに、1段目で前から1列目の6人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の5人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の5人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
3段目で前から1列目の4人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
2段目で前から2列目の4人が並びます。
  中腰の姿勢で、手は、1段目の2列目の人の背中に乗せ、足は地面です。
1段目で前から3列目の4人が並びます。
  四つんばいで地面につきます。
4段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、3段目で前から1列目の人の背中に乗せ、足は、2段目で前から2列目の人の背中(肩)の上です。
3段目で前から2列目の3人が並びます。
  中腰の姿勢で、手は、2段目で前から2列目の人の背中に乗せ、足は、1段目で前から3列目の人の背中(肩)の上です。
5段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、4段目で前から1列目の人の背中に乗せ、足は、3段目で前から2列目の人の背中(肩)の上です。
6段目の人が、5段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

$ ruby gf_build.rb -p 7
7段の三角錐タイプのピラミッドをつくるには、55人が協力して行います。
はじめに、1段目で前から1列目の7人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の6人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の6人が並びます。
  四つんばいで地面につきます。
3段目で前から1列目の5人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
2段目で前から2列目の5人が並びます。
  中腰の姿勢で、手は、1段目の2列目の人の背中に乗せ、足は地面です。
1段目で前から3列目の5人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
4段目で前から1列目の4人が並びます。
  中腰の姿勢で、手は、3段目で前から1列目の人の背中に乗せ、足は、2段目で前から2列目の人の背中(肩)の上です。
3段目で前から2列目の4人が並びます。
  中腰の姿勢で、手は、2段目で前から2列目の人の背中に乗せ、足は、1段目で前から3列目の人の背中(肩)の上です。
2段目で前から3列目の4人が並びます。
  中腰の姿勢で、手は、1段目の3列目の人の背中に乗せ、足は地面です。
5段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、4段目で前から1列目の人の背中に乗せ、足は、3段目で前から2列目の人の背中(肩)の上です。
4段目で前から2列目の3人が並びます。
  中腰の姿勢で、手は、3段目で前から2列目の人の背中に乗せ、足は、2段目で前から3列目の人の背中(肩)の上です。
6段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、5段目で前から1列目の人の背中に乗せ、足は、4段目で前から2列目の人の背中(肩)の上です。
7段目の人が、6段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

$ ruby gf_build.rb -p 8
8段の三角錐タイプのピラミッドをつくるには、81人が協力して行います。
はじめに、1段目で前から1列目の8人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の7人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の7人が並びます。
  四つんばいで地面につきます。
3段目で前から1列目の6人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
2段目で前から2列目の6人が並びます。
  中腰の姿勢で、手は、1段目の2列目の人の背中に乗せ、足は地面です。
1段目で前から3列目の6人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
4段目で前から1列目の5人が並びます。
  中腰の姿勢で、手は、3段目で前から1列目の人の背中に乗せ、足は、2段目で前から2列目の人の背中(肩)の上です。
3段目で前から2列目の5人が並びます。
  中腰の姿勢で、手は、2段目で前から2列目の人の背中に乗せ、足は、1段目で前から3列目の人の背中(肩)の上です。
2段目で前から3列目の5人が並びます。
  中腰の姿勢で、手は、1段目の3列目の人の背中に乗せ、足は地面です。
1段目で前から4列目の5人が並びます。
  四つんばいで地面につきます。
5段目で前から1列目の4人が並びます。
  中腰の姿勢で、手は、4段目で前から1列目の人の背中に乗せ、足は、3段目で前から2列目の人の背中(肩)の上です。
4段目で前から2列目の4人が並びます。
  中腰の姿勢で、手は、3段目で前から2列目の人の背中に乗せ、足は、2段目で前から3列目の人の背中(肩)の上です。
3段目で前から3列目の4人が並びます。
  中腰の姿勢で、手は、2段目で前から3列目の人の背中に乗せ、足は、1段目で前から4列目の人の背中(肩)の上です。
6段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、5段目で前から1列目の人の背中に乗せ、足は、4段目で前から2列目の人の背中(肩)の上です。
5段目で前から2列目の3人が並びます。
  中腰の姿勢で、手は、4段目で前から2列目の人の背中に乗せ、足は、3段目で前から3列目の人の背中(肩)の上です。
7段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、6段目で前から1列目の人の背中に乗せ、足は、5段目で前から2列目の人の背中(肩)の上です。
8段目の人が、7段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

$ ruby gf_build.rb -p 9
9段の三角錐タイプのピラミッドをつくるには、111人が協力して行います。
はじめに、1段目で前から1列目の9人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の8人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の8人が並びます。
  四つんばいで地面につきます。
3段目で前から1列目の7人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
2段目で前から2列目の7人が並びます。
  中腰の姿勢で、手は、1段目の2列目の人の背中に乗せ、足は地面です。
1段目で前から3列目の7人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
4段目で前から1列目の6人が並びます。
  中腰の姿勢で、手は、3段目で前から1列目の人の背中に乗せ、足は、2段目で前から2列目の人の背中(肩)の上です。
3段目で前から2列目の6人が並びます。
  中腰の姿勢で、手は、2段目で前から2列目の人の背中に乗せ、足は、1段目で前から3列目の人の背中(肩)の上です。
2段目で前から3列目の6人が並びます。
  中腰の姿勢で、手は、1段目の3列目の人の背中に乗せ、足は地面です。
1段目で前から4列目の6人が並びます。
  四つんばいで地面につきます。
5段目で前から1列目の5人が並びます。
  中腰の姿勢で、手は、4段目で前から1列目の人の背中に乗せ、足は、3段目で前から2列目の人の背中(肩)の上です。
4段目で前から2列目の5人が並びます。
  中腰の姿勢で、手は、3段目で前から2列目の人の背中に乗せ、足は、2段目で前から3列目の人の背中(肩)の上です。
3段目で前から3列目の5人が並びます。
  中腰の姿勢で、手は、2段目で前から3列目の人の背中に乗せ、足は、1段目で前から4列目の人の背中(肩)の上です。
2段目で前から4列目の5人が並びます。
  中腰の姿勢で、手は、1段目の4列目の人の背中に乗せ、足は地面です。
6段目で前から1列目の4人が並びます。
  中腰の姿勢で、手は、5段目で前から1列目の人の背中に乗せ、足は、4段目で前から2列目の人の背中(肩)の上です。
5段目で前から2列目の4人が並びます。
  中腰の姿勢で、手は、4段目で前から2列目の人の背中に乗せ、足は、3段目で前から3列目の人の背中(肩)の上です。
4段目で前から3列目の4人が並びます。
  中腰の姿勢で、手は、3段目で前から3列目の人の背中に乗せ、足は、2段目で前から4列目の人の背中(肩)の上です。
7段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、6段目で前から1列目の人の背中に乗せ、足は、5段目で前から2列目の人の背中(肩)の上です。
6段目で前から2列目の3人が並びます。
  中腰の姿勢で、手は、5段目で前から2列目の人の背中に乗せ、足は、4段目で前から3列目の人の背中(肩)の上です。
8段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、7段目で前から1列目の人の背中に乗せ、足は、6段目で前から2列目の人の背中(肩)の上です。
9段目の人が、8段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

$ ruby gf_build.rb -p 10
10段の三角錐タイプのピラミッドをつくるには、151人が協力して行います。
はじめに、1段目で前から1列目の10人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の9人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の9人が並びます。
  四つんばいで地面につきます。
3段目で前から1列目の8人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
2段目で前から2列目の8人が並びます。
  中腰の姿勢で、手は、1段目の2列目の人の背中に乗せ、足は地面です。
1段目で前から3列目の8人が並びます。
  四つんばいで地面につきます。
4段目で前から1列目の7人が並びます。
  中腰の姿勢で、手は、3段目で前から1列目の人の背中に乗せ、足は、2段目で前から2列目の人の背中(肩)の上です。
3段目で前から2列目の7人が並びます。
  中腰の姿勢で、手は、2段目で前から2列目の人の背中に乗せ、足は、1段目で前から3列目の人の背中(肩)の上です。
2段目で前から3列目の7人が並びます。
  中腰の姿勢で、手は、1段目の3列目の人の背中に乗せ、足は地面です。
1段目で前から4列目の7人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
5段目で前から1列目の6人が並びます。
  中腰の姿勢で、手は、4段目で前から1列目の人の背中に乗せ、足は、3段目で前から2列目の人の背中(肩)の上です。
4段目で前から2列目の6人が並びます。
  中腰の姿勢で、手は、3段目で前から2列目の人の背中に乗せ、足は、2段目で前から3列目の人の背中(肩)の上です。
3段目で前から3列目の6人が並びます。
  中腰の姿勢で、手は、2段目で前から3列目の人の背中に乗せ、足は、1段目で前から4列目の人の背中(肩)の上です。
2段目で前から4列目の6人が並びます。
  中腰の姿勢で、手は、1段目の4列目の人の背中に乗せ、足は地面です。
1段目で前から5列目の6人が並びます。
  四つんばいで地面につきます。
6段目で前から1列目の5人が並びます。
  中腰の姿勢で、手は、5段目で前から1列目の人の背中に乗せ、足は、4段目で前から2列目の人の背中(肩)の上です。
5段目で前から2列目の5人が並びます。
  中腰の姿勢で、手は、4段目で前から2列目の人の背中に乗せ、足は、3段目で前から3列目の人の背中(肩)の上です。
4段目で前から3列目の5人が並びます。
  中腰の姿勢で、手は、3段目で前から3列目の人の背中に乗せ、足は、2段目で前から4列目の人の背中(肩)の上です。
3段目で前から4列目の5人が並びます。
  中腰の姿勢で、手は、2段目で前から4列目の人の背中に乗せ、足は、1段目で前から5列目の人の背中(肩)の上です。
7段目で前から1列目の4人が並びます。
  中腰の姿勢で、手は、6段目で前から1列目の人の背中に乗せ、足は、5段目で前から2列目の人の背中(肩)の上です。
6段目で前から2列目の4人が並びます。
  中腰の姿勢で、手は、5段目で前から2列目の人の背中に乗せ、足は、4段目で前から3列目の人の背中(肩)の上です。
5段目で前から3列目の4人が並びます。
  中腰の姿勢で、手は、4段目で前から3列目の人の背中に乗せ、足は、3段目で前から4列目の人の背中(肩)の上です。
8段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、7段目で前から1列目の人の背中に乗せ、足は、6段目で前から2列目の人の背中(肩)の上です。
7段目で前から2列目の3人が並びます。
  中腰の姿勢で、手は、6段目で前から2列目の人の背中に乗せ、足は、5段目で前から3列目の人の背中(肩)の上です。
9段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、8段目で前から1列目の人の背中に乗せ、足は、7段目で前から2列目の人の背中(肩)の上です。
10段目の人が、9段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

$ ruby gf_build.rb -p 11
11段の三角錐タイプのピラミッドをつくるには、196人が協力して行います。
はじめに、1段目で前から1列目の11人が並びます。
  四つんばいで地面につきます。
2段目で前から1列目の10人が並びます。
  中腰の姿勢で、手は、1段目の1列目の人の背中に乗せ、足は地面です。
1段目で前から2列目の10人が並びます。
  四つんばいで地面につきます。
3段目で前から1列目の9人が並びます。
  中腰の姿勢で、手は、2段目で前から1列目の人の背中に乗せ、足は、1段目で前から2列目の人の背中(肩)の上です。
2段目で前から2列目の9人が並びます。
  中腰の姿勢で、手は、1段目の2列目の人の背中に乗せ、足は地面です。
1段目で前から3列目の9人が並びます。
  四つんばいで地面につきます。
4段目で前から1列目の8人が並びます。
  中腰の姿勢で、手は、3段目で前から1列目の人の背中に乗せ、足は、2段目で前から2列目の人の背中(肩)の上です。
3段目で前から2列目の8人が並びます。
  中腰の姿勢で、手は、2段目で前から2列目の人の背中に乗せ、足は、1段目で前から3列目の人の背中(肩)の上です。
2段目で前から3列目の8人が並びます。
  中腰の姿勢で、手は、1段目の3列目の人の背中に乗せ、足は地面です。
1段目で前から4列目の8人が並びます。
  四つんばいで地面につきます。
  この列に最も負荷がかかりますので、協力し合いましょう。
5段目で前から1列目の7人が並びます。
  中腰の姿勢で、手は、4段目で前から1列目の人の背中に乗せ、足は、3段目で前から2列目の人の背中(肩)の上です。
4段目で前から2列目の7人が並びます。
  中腰の姿勢で、手は、3段目で前から2列目の人の背中に乗せ、足は、2段目で前から3列目の人の背中(肩)の上です。
3段目で前から3列目の7人が並びます。
  中腰の姿勢で、手は、2段目で前から3列目の人の背中に乗せ、足は、1段目で前から4列目の人の背中(肩)の上です。
2段目で前から4列目の7人が並びます。
  中腰の姿勢で、手は、1段目の4列目の人の背中に乗せ、足は地面です。
1段目で前から5列目の7人が並びます。
  四つんばいで地面につきます。
6段目で前から1列目の6人が並びます。
  中腰の姿勢で、手は、5段目で前から1列目の人の背中に乗せ、足は、4段目で前から2列目の人の背中(肩)の上です。
5段目で前から2列目の6人が並びます。
  中腰の姿勢で、手は、4段目で前から2列目の人の背中に乗せ、足は、3段目で前から3列目の人の背中(肩)の上です。
4段目で前から3列目の6人が並びます。
  中腰の姿勢で、手は、3段目で前から3列目の人の背中に乗せ、足は、2段目で前から4列目の人の背中(肩)の上です。
3段目で前から4列目の6人が並びます。
  中腰の姿勢で、手は、2段目で前から4列目の人の背中に乗せ、足は、1段目で前から5列目の人の背中(肩)の上です。
2段目で前から5列目の6人が並びます。
  中腰の姿勢で、手は、1段目の5列目の人の背中に乗せ、足は地面です。
7段目で前から1列目の5人が並びます。
  中腰の姿勢で、手は、6段目で前から1列目の人の背中に乗せ、足は、5段目で前から2列目の人の背中(肩)の上です。
6段目で前から2列目の5人が並びます。
  中腰の姿勢で、手は、5段目で前から2列目の人の背中に乗せ、足は、4段目で前から3列目の人の背中(肩)の上です。
5段目で前から3列目の5人が並びます。
  中腰の姿勢で、手は、4段目で前から3列目の人の背中に乗せ、足は、3段目で前から4列目の人の背中(肩)の上です。
4段目で前から4列目の5人が並びます。
  中腰の姿勢で、手は、3段目で前から4列目の人の背中に乗せ、足は、2段目で前から5列目の人の背中(肩)の上です。
8段目で前から1列目の4人が並びます。
  中腰の姿勢で、手は、7段目で前から1列目の人の背中に乗せ、足は、6段目で前から2列目の人の背中(肩)の上です。
7段目で前から2列目の4人が並びます。
  中腰の姿勢で、手は、6段目で前から2列目の人の背中に乗せ、足は、5段目で前から3列目の人の背中(肩)の上です。
6段目で前から3列目の4人が並びます。
  中腰の姿勢で、手は、5段目で前から3列目の人の背中に乗せ、足は、4段目で前から4列目の人の背中(肩)の上です。
9段目で前から1列目の3人が並びます。
  中腰の姿勢で、手は、8段目で前から1列目の人の背中に乗せ、足は、7段目で前から2列目の人の背中(肩)の上です。
8段目で前から2列目の3人が並びます。
  中腰の姿勢で、手は、7段目で前から2列目の人の背中に乗せ、足は、6段目で前から3列目の人の背中(肩)の上です。
10段目で前から1列目の2人が並びます。
  中腰の姿勢で、手は、9段目で前から1列目の人の背中に乗せ、足は、8段目で前から2列目の人の背中(肩)の上です。
11段目の人が、10段目の2人の背に足を乗せて立ちます。
最後に1列目の人がポーズを決めたら、完成です。

どの出力にも,「この列に最も負荷がかかりますので、協力し合いましょう。」が1つずつ,入っています.これはgfload.rbの内部で計算した値を用いています.
具体的な順番ですが,Rubyの標準ライブラリに,トポロジカルソートをしてくれるtsortがあると喜んで,依存関係をハッシュにしてソートしたものの,うまくいきませんでした.http://www.geocities.jp/ma85003/math/human_pyramid.pdfでは4段・7段・10段の三角錐人間ピラミッドの図が載っており,横から見た図の番号をもとに,何段になっても求められるルールを決めました.「下からi段目,前からj列目」の各列に対して,(1) i+jの値で昇順(小さい値が先),(2) i+jの値が等しければiの値で降順(大きい値が先),とすればいいのでした.
出力と,上記PDFの図を見て,偶数段のこのピラミッドは一番後ろが1段目(四つんばい)なのに対し,奇数段の場合には,一番後ろが2段目(中腰の姿勢)で,最上段の人を含め何人かはその上を登っていくことに気づきました.とはいっても,補助をつけるとか,土台の最後列の人の背中(お尻?)を借りるとか,身軽なんだからひょいっと上がれるんじゃないかとか,選択肢は思い浮かぶのですが.