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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

0回答

847閲覧

Swiftの配列で総当たり戦をする方法

zakkiblog

総合スコア3

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2021/02/16 12:55

編集2021/02/16 12:59

配列の要素を2個ずつ取り出して総当たり戦を行うプログラミングを作りたいです。

要素を自分で比較し勝った方には+1点、負けた方には−1点を加え最終的に要素を点数順に並び替えるソートを作りたいです。

配列を点数順に並び替えるのはソート機能を使えば出来そうなのですが、そもそも総当たりでそれぞれの要素に点数を加えていく方法が分かりません。

使える機能などがあったら教えてください。
よろしくお願いします!

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

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

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

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

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

AbeTakashi

2021/02/16 13:24

色々なやり方があると思いますが、まずはあまり難しく考えずに単純にfor inとかforEachを使ってかけるところまで書いてみると良いと思いますよ。 参考 https://qiita.com/ideaagri/items/23292ca0b244c70e3558 例えばfor inの中にfor inを入れて入れ子にしてみるとか、色々考えてみましょう。 この質問文は編集・追記できますので、頑張ってかけるところまでかいてみて追記してください。正直、このヒントでコードが1行もかけないとなると、ちょっと無理かなとは思います。あまり効率とか難しいことを考えずに、まずは目的を果たすところから、とにかく手を動かして色々書いてみてください。SwiftはPlaygroundsがありますから、そこで色々試してみるといいと思います。
hoshi-takanori

2021/02/17 00:26

いきなり答えを書いちゃうと丸投げになるので、ヒントを書きます。 ・まず、実際に要素の配列を用意しましょう。これがないと何も始まりません。何か具体的なプログラムを作ってるなら、そこで使うオブジェクトか構造体になるのでしょうけど、特にない (または練習のために単純なものでやりたい) なら乱数の配列を作ればいいと思います。 ・次に、各要素の点数を入れる場所が必要ですね。クラスや構造体の中に持たせることもできますし、独立した配列にすることもできます。 ・実際に点数を計算しましょう。 上の TakashiAbe さんのコメントが参考になると思います。 ・最後にソートします。各要素の点数に応じたソートになるので、ちょっとややこしいかも。 それでは、がんばってください。
zakkiblog

2021/02/18 13:00

御二方とも優しいアドバイスありがとうございます。 ネットなどで調べながら自分のかけるところまで書いてみました。 そこで前回よりも具体的な質問が生まれたので改めて投稿させて頂きます。 配列の要素から2つを取り出して比較した際に、その結果を点数に反映させるのにはswitch文を使おうと思っています。 ですがそもそも比較した際の結果を外部から入力する方法が分かりません。 1を押したら左の勝ち、2を押したら引き分け、3を押したら右の勝ちという風にしてこの結果を入力してswitch文に反映させたいです。 アドバイス等ありましたらよろしくお願いします。 var member = ["A","B","C","D","E"] var score = [0,0,0,0,0] for l in 0...3 { let m = l+1 for n in m...4 { print(member[l] + "vs" + member[n]) var a = input:Int //1左を選択、2どちらでもない、3右を選択 switch a { case 1: score[l] += 1 score[n] -= 1 case 3: score[l] -= 1 score[n] += 1 } } }
hoshi-takanori

2021/02/18 13:15

入力は、そのプログラムをどうやって動かすかによりますね。 ターミナルで動かすなら readLine() が使えますけど…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問