Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

Zahlen, Stellen, Teilbarkeit

Diskussion: Zahlen, Stellen, Teilbarkeit im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige Also: gegeben sei eine Zahlenreihe von 0 bis n. Darin sollen alle Zahlen von 0 bis n vorkommen. Also ...

Antwort
Alt 07.05.09, 16:34   #1 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard Zahlen, Stellen, Teilbarkeit

Anzeige

Also: gegeben sei eine Zahlenreihe von 0 bis n. Darin sollen alle Zahlen von 0 bis n vorkommen. Also eine Liste [0,1,2,3 ... n]
Nun kann man die Liste von der ersten Postion bis zur letzen durchgehen und daraus Zahlen bilden, in dem man einfach benachbarte Zahlen bis zur aktuellen Position zusammenstellt:
0
01 (eins)
012 (zwölf)
0123 (hundert dreiundzwanzig)

Schreibe ein Programm, welches die Zahlen nun so anordnet, dass in der Ergebnisliste eine bis zur i-ten Stelle zusammengesetzte Zahl in der Liste durch dieses i teilbar ist. Das i soll von 1 bis n+1 gehen - man soll also nacheinander immer größere Zahl bilden.

Bsp.:
0 bis 2: [0,1,2]
eine mögliche Lösung: [1,0,2]
Prüfung: i=1: 1 ist teilbar durch 1
i=2: 10 ist teilbar durch 2
i=3: 102 ist teilbar durch 3 = 34

weitere Lösung; 2,0,1
denn:
i=1: 2 ist teilbar durch 1
i=2: 20 ist teilbar durch 2
i=3: 201 teilbar durch 3

oder
0 bis 8: 0,1,2,3,4,5,6,7,8
[3,8,1,6,5,4,7,2,0]
Prüfung:
i=1: 3 teilbar durch 1
I=2: 38 teilbar durch 2
...
i=8: 38165472 teilbar durch 8 (=4770684)
i=9: 381654720 teilbar durch 9

gib eine Anordnung für 0,1,2,3,4,5,6,7,8,9 an

__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 20.05.09, 00:04   #2 (permalink)
 
Registriert seit: 19.05.09
dafil Leistung: Facit NTK
Likes: 0
Standard

Zeige Lösung   

Eine (die einzige) Lösung ist 3816547290

Code:
#include <iostream>
#include <set>

using namespace std;

void dostuff(int depth, int maxdepth, long long number, set<int> numbers_used)
{
    if (depth==maxdepth)
        cout << number << endl;
    else
        for (int i=0; i<maxdepth; i++)
            if ((number*10+i)%(depth+1)==0)
            {
                if (numbers_used.find(i)!=numbers_used.end())
                    continue;
                numbers_used.insert(i);
                dostuff(depth+1,maxdepth,number*10+i,numbers_used);
                numbers_used.erase(i);
            }
}

int main()
{
    set<int> numbers;
    dostuff(0,10,0,numbers);
    return 0;
}
dafil ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 19.06.09, 16:04   #3 (permalink)
 
Registriert seit: 21.04.08
Ook! Leistung: Facit NTK
Likes: 0
Standard

Python
Code:
from itertools import permutations

def valid(n, ps):
   seq = map(lambda i: int("".join(ps[:i])), range(1, n+2))
   return all(map(lambda i: seq[i-1] % i == 0 and seq[i-1] != 0, range(1, n+2)))

def itr(n):
   return filter(lambda ps: valid(n, ps), permutations(map(str, range(n+1))))

for ps in map(lambda ps: "".join(ps), itr(9)): print ps
Gruß
Felix
Ook! ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » Zahlen, Stellen, Teilbarkeit
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tv-Ausgang auf 50 Hz stellen? Metallica Hardware Probleme 3 28.05.07 16:54
Hz bei Linux höher stellen Phelis Linux/UNIX 8 30.10.06 13:59
XP: 14 stellen PW geknackt?!? Elderan (In)security allgemein 19 01.08.04 17:55
LC4 => 8 Stellen Passwörter Elderan Cryptography & Encryption 3 11.05.04 13:52
Website online stellen gelöscht Internet Allgemein 12 13.05.03 14:24


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61