限定しりとり

私の知識では形にならなかったのでどなたか助けてください。
基本仕様
1:テトリミノの順番を20周分作成、表示する
(できるだけ同じ順番がでないようにする)
2:テトリスのテトリミノは、ランダム化された規則で出現する
3:テトリミノはアルファベットでI,O,T,J,L,S,Zの7種類ある
4:7つがランダムで流れ、7つ流れた後は、まだランダムな7つが流れてくる
例:1週目:TJIOZLS
  2週目:ZOITSTL
  3週目:IZLSJTO
コードのヒント
char[] tetrimino = { 'I', 'O', 'S', 'Z', 'J', 'L', 'T' };
Console.WriteLine(tetrimino);

↑どこで使えばいいかも分からないです。

A 回答 (3件)

JAVAやLispって『さて?』な初級者と言うより未開拓な領域のジジィですけど。



>コードのヒント
>char[] tetrimino = { 'I', 'O', 'S', 'Z', 'J', 'L', 'T' };
>Console.WriteLine(tetrimino);

必要な文字群を格納した変数名で表示させないといけないの?
検証できないですがVSのC#ならLINQとLISTクラス等で可能なのではと思えますが?
別のC#ってなら弄った事ないので可能か不可能かは判断できません。
    • good
    • 0

前回の質問にある cametan_42 さんの回答をC#で焼き直ししました。


あとは自力で頑張ってください。

using System;
using System.Collections.Generic;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var characters = "TJIOZLS";
var random = new Random();
var resultStrings = new List<string>();

// 20回まわす
while (resultStrings.Count != 20)
{
// ランダムな文字列を生成
var charsarr = new char[7];
for (int i = 0; i < charsarr.Length; i++)
{
charsarr[i] = characters[random.Next(characters.Length)];
}

// すでに生成済みの文字列だった場合は結果に追加しない
var resultString = new string(charsarr);
if (resultStrings.Contains(resultString))
{
continue;
}
resultStrings.Add(resultString);
}

// 結果をすべて出力する
foreach (var resultString in resultStrings)
{
Console.WriteLine(resultString);
}
Console.ReadLine();
}
}
}
    • good
    • 13

うん?


基本的にはこないだのコードと同じだと思うんですが・・・・・・。

https://oshiete.goo.ne.jp/qa/12426957.html

ここのアキュムレータの長さを20にすれば良い、と。
基本それだけでしょ?
    • good
    • 0
この回答へのお礼

以前教えて頂いたものは正直理解しきれず、C#の形に変えようと頑張ったのですが見たことないエラーばかり起きてしまったので再度質問させていただきました。力不足ですみません。

お礼日時:2021/07/01 16:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!