質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

Pythonでの関数の繰り返し処理

okari3
okari3

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

2回答

0評価

1クリップ

180閲覧

投稿2022/09/19 16:39

前提

Pythonを独学で始めたのですが、プログラム作成中に行き詰ってしまいました。
どなたか解決方法をご教示願います。
Python3.9を使用しています。

実現したいこと

引数にある処理をして戻り値をだす6つの関数(関数A~F)があり、
同じ関数が2回連続しないようにしつつ、7回処理をしたいです。

【例】
×)関数A→B→C→A→A→B→A(4,5回目の処理で関数Aが連続している)
〇)関数A→B→C→D→E→F→A(同じ処理が連続していない)

この処理を、すべての組み合わせで行いたいのですが、
どのように書けばよいでしょうか?

【具体例】
具体的には、直方体の3次元空間内で、任意のtargetの座標点が
6つの壁(天井・床)で7回反射したときの鏡像の座標を求めたいです。
以下のソースコードのdef mirror1から6までが処理したい関数です。

該当のソースコード

Python

#初期条件 #部屋の寸法 xwide = 20 ywide = 15 zwide = 5 #任意の座標点 target = np.array([2, 2, 2]) #原点をとおる壁でのy方向の反射 xzmirror = np.array([[1, 0, 0], [0, -1, 0], [0, 0, 1]]) #原点をとおる壁でのz方向の反射 xymirror = np.array([[1, 0, 0], [0, 1, 0], [0, 0, -1]]) #原点をとおる壁でのx方向の反射 yzmirror = np.array([[-1, 0, 0], [0, 1, 0], [0, 0, 1]]) #法線ベクトルを準備 xn = np.array([-1, 0, 0]) yn = np.array([0, -1, 0]) zn = np.array([0, 0, -1]) #反射の鏡映座標を求める関数 def mirror1(a): x0_mir1 = np.dot(a, yzmirror) return x0_mir1 def mirror2(a): y0_mir1 = np.dot(a, xzmirror) return y0_mir1 def mirror3(a): z0_mir1 = np.dot(a, xymirror) return z0_mir1 def mirror4(a): x1_mir1 = a - (2 * (np.dot(a, xn) + xwide)) * xn return x1_mir1 def mirror5(a): y1_mir1 = a - (2 * (np.dot(a, yn) + ywide)) * yn return y1_mir1 def mirror6(a): z1_mir1 = a - (2 * (np.dot(a, zn) + zwide)) * zn return z1_mir1

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。