Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Der Tresor (Schleifen)

Ein reicher Mann hat leider den Code für seinen Tresor vergessen. Er weiß lediglich noch, dass alle Ziffern von 1 bis 9 genau einmal vorkommen. Der Code hat also die Form ABCDEFGHI. Außerdem hat er noch einen kleinen Zettel mit folgenden Notizen gefunden:

E – I = F

I + E = B

G * I = A

H – C = D / I

Schreibe einen Algorithmus, der diesen Code – wenn möglich performant - knackt.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

4 Lösung(en)

import itertools
for x in itertools.permutations(range(1, 10)):
    if x[4]-x[8] == x[5] and x[4]+x[8] == x[1] and x[6]*x[8] == x[0] and x[8]*(x[7]-x[2]) == x[3]:
        print("".join(map(lambda z: str(z), x)))
        break
                

Lösung von: Name nicht veröffentlicht

// C++ 17
#include <iostream>
#include <algorithm>
#include <sstream>
#include <vector>

int main() {
    std::vector<int> v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    std::stringstream s;
    while (next_permutation(v.begin(), v.end())) {
        if (v[4] - v[8] == v[5] &&
            v[8] + v[4] == v[1] &&
            v[6] * v[8] == v[0] &&
            v[7] - v[2] == (v[3] / v[8])) {
            std::copy(v.begin(), v.end(), std::ostream_iterator<int>(s, ""));
            std::cout << s.str().c_str() << "\n";
            break;
        }
    }
}
                

Lösung von: Jens Kelm (@JKooP)

// NET 6.x | C# 10.x | VS-2022

var nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var p = new Permutation();
p.Permute(nums);
Console.WriteLine(p);

public class Permutation {
    private List<string> _lst = new List<string>();
    public void Permute(int[] arr) => Permute(arr, 0, arr.Length - 1);
    private void Permute(int[] arr, int k, int m) {
        if (k == m) {
            if (arr[4] - arr[8] == arr[5] &&
                arr[8] + arr[4] == arr[1] &&
                arr[6] * arr[8] == arr[0] &&
                arr[7] - arr[2] == (arr[3] / arr[8])) {
                _lst.Add(string.Join("", arr));
            }
        }
        else
            for (int i = k; i <= m; i++) {
                (arr[k], arr[i]) = (arr[i], arr[k]);
                Permute(arr, k + 1, m);
                (arr[k], arr[i]) = (arr[i], arr[k]);
            }
    }
    public override string ToString() => _lst.FirstOrDefault() ?? "";
}
                

Lösung von: Jens Kelm (@JKooP)

from itertools import permutations
f=lambda x,y: int(str(x)[y])
print([i for i in [int(''.join(findall('[1-9]',str(b)))) for b in list(permutations('123456789'))] if f(i,4)-f(i,-1)==f(i,5) and f(i,-1)+f(i,4)==f(i,1) and f(i,-3)*f(i,-1)==f(i,0) and f(i,-2)-f(i,2)==f(i,3)/f(i,-1)][0])
                

Lösung von: rob ert (tub)

Verifikation/Checksumme:

675941283

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit:
Schwierigkeit: Leicht
Webcode: bweo-xqmc
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen