Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Master Mind (Datentypen, Variablen und Ausdrücke)

Schreiben Sie ein Programm, dass alle Möglichkeiten des MasterMind-Spiels ausgibt. Dabei werden sechs Farben auf vier Plätze verteilt. Jede Farbe darf aber auch mehrfach verwendet werden. Dabei Anstelle der sechs Farben rot, blau, grün, gelb, braun und orange sollen die Buchstaben 'r', 'b', 'g', 'e', 'a', und 'o' stehen. So ist z. B. "geeb" eine gültige Ausgabe. Zusatzaufgabe: Wie oft kommt das Muster "rot"-"blau"-"rot" (also "rbr") vor? Schreiben Sie dazu eine Methode rotBlauRot(), die true oder false zurückgibt.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

2 Lösung(en)

let results = [];

function toComb(str) {
  str = str.replace(/0/g, 'R');   // rot
  str = str.replace(/1/g, 'B');   // blau
  str = str.replace(/2/g, 'G');   // grün
  str = str.replace(/3/g, 'E');   // gelb
  str = str.replace(/4/g, 'A');   // braun
  str = str.replace(/5/g, 'O');   // orange
  return str;
}

function leadZero (str) {
  while (str.length < 4) str = '0' + str;
  return str;
}

// rotBlauRot()
function contains(str, pattern) {
  return str.indexOf(pattern) != -1;
}

// liste schreiben:
// 0 (0000[6] = RRRR) bis 1295 (5555[6] = OOOO)
for (let i = 0; i <= 1295; i++)
  results.push(toComb(leadZero(i.toString(6))));
console.log(results);

// RBR suchen
let rbr = 0;
for (i = 0; i < results.length; i++)
  if (contains(results[i], 'RBR')) rbr++;
console.log(`Anzahl der Kombination RBR: ${rbr}`);         // lissalanda@gmx.at

                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

// C++ 14 | VS-2022
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

const std::string Nums{ "012345" }, Chars{ "rbgeao" };

std::string get_colors(const std::string& str) {
	const auto right{ ("000" + str) };
	auto out{ right.substr(right.size() - 4) };
	for (size_t i{ 0 }; i < 4; i++) {
		const auto pos{ Nums.find(out[i]) };
		if (pos == std::string::npos) return "";
		else out[i] = Chars[pos];
	}
	return out;
}

int main() {
	std::vector<std::string> v;
	for (size_t i{ 0 }; i <= 5555; i++) {
		auto r{ get_colors(std::to_string(i)) };
		if (r != "") v.push_back(r);
	}
	auto rbr{ 0 };
	std::for_each(v.begin(), v.end(), [&](auto i) { if (i.find("rbr") != std::string::npos) rbr++; });
	std::cout << "rbr: " << rbr << "\n";

	std::for_each(v.begin(), v.end(), [&](auto i) { std::cout << i << "\n"; });
}
                

Lösung von: Jens Kelm (@JKooP)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: k.A.
Webcode: yepw-g6d9
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen