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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

182閲覧

順列で、arrayのindexについて分かりません。

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/01/25 03:32

編集2019/01/25 04:29

分からない部分

print("‼️ a[n] は (a[n])")で何故、 
[n] は 2 と出力されるかが分かりません。

何故、[n] は 1 とならないのでしょうか?

func permute(_ a: [Int], _ n: Int, _ pos: inout Int) { var a = a pos += 1 a[n] = pos    print("???? (a)") if pos == a.count - 1 { print(a) // display the current permutation } else { for i in 0..<a.count { if a[i] == 0 { print("‼️ここまで (permute(a, i, &pos))") } } } pos -= 1    print("???? 減算 pos - 1 で = (pos)") print("‼️ a[n] は (a[n])") a[n] = 0    print("???? (a)") } let numbers = [0, 0, 0] var pos = -1 permute(numbers, 0, &pos)

関数をスタートさせ、

print("???? (a)") で 
???? [0, 0, 0]
???? [1, 0, 0]
???? [1, 2, 0]

の????[1, 2, 0]が1番最初に出力されてから、

初めてprint("???? 減算 pos - 1 で = (pos)") で減算され pos = 1になります。
それからすぐに a[n](pos == 1の状態)なので、index 1の値 2が 0に更新されると思います。
ですのでprint("???? (a)")では [1, 0, 0]になっています。

分からない部分の a[n] は 2 は
何故、[n] は 1 とならないのでしょうか?

減算されている時に加算していないので、 
[n] = pos の更新が行われていないからでしょうか?

この部分が分からないので、
初めて print("‼️ここまで (permute(a, i, &pos))") が出力されるまでの処理以降の
理解が進みません。

見ていただけないでしょうか?
お願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/01/25 03:53

>>1番最初にprint("???? \(a)") で [1, 2, 0]が出力されてから、 でいきなり間違っていますが。
退会済みユーザー

退会済みユーザー

2019/01/25 03:58 編集

間違えました。 let numbers = [0, 0, 0, 0]ではなく let numbers = [0, 0, 0]でした 修正しました。 本文も一部修正しました。
fuzzball

2019/01/25 03:59

それでも同じです。 一番最初は ???? [0, 0, 0] と出力されます。
退会済みユーザー

退会済みユーザー

2019/01/25 04:02

すみません、 ???? [0, 0, 0] ???? [1, 0, 0] ???? [1, 2, 0] の ???? [1, 2, 0]が1番最初に出力されてから、 に本文を修正しました。
fuzzball

2019/01/25 04:03

[n] というのは n のことでしょうか?
退会済みユーザー

退会済みユーザー

2019/01/25 04:04

はい そうです。
fuzzball

2019/01/25 04:06

??? 「はい そうです」と言いながら a[n] に書き換えたのはなぜですか?
退会済みユーザー

退会済みユーザー

2019/01/25 04:29

誤りました。
fuzzball

2019/01/25 04:32 編集

[n] に戻したようですが、なぜ n のことを [n] と書くのでしょうか?(一部 a[n] の表記が残っていますが間違いではないのでしょうか?)
guest

回答1

0

ベストアンサー

a = [1, 2, 0] n = 1 a[n] = 2

なので2で正しいと思います。

投稿2019/01/25 04:05

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問