WisFaq!

\require{AMSmath} geprint op zaterdag 4 mei 2024

Systematisch anagrammen maken

Ik wil in VisualBasic een programma schijven dat van een gegeven letterreeks (een woord) alle mogelijk anagrammen geeft.
Nu wilde ik hiervoor een n-tallig stelsel maken waarin n het aantal tekens van de reeks is.

Voorbeeld:
Tom:
T=0
o=1
m=2
Dus een 3-tallig stelsel.

Als ik dan in het n-tallig stelsel alle getallen van 0 tot nn achter elkaar zet, en de cijfers vervang door de gegeven tekens heb ik alle mogelijke opeenvolgingen van de tekens. Echter moeten dan wel alle dubbele (zoals 233=omm, dit is geen anagram van Tom) eruit, maar dat is wiskundig niet het meest complexe.

Mijn vraag is een algoritme waarmee ik een niet-10-tallig stelsel kan opbouwen. Ik werk in een programmeertaal dus iteratie en dergelijke zijn geen probleem.

Bij voorbaat dank
Tom

Tom
15-6-2005

Antwoord

Zoiets? (in Delphi):

var i,n: integer;

function base_10_to_base_basis(getal,basis:integer):string;
var s:string;
begin
s:='';
while getal0 do
begin
s:=inttostr(getal mod basis)+s;
getal:=getal div basis
end;
base_10_to_base_basis:=s;
end;

begin
n:=4;
for i:=1 to trunc(power(n,n))-1 do
memo1.lines.add(base_10_to_base_basis(i,n))
end;

hk
16-6-2005


© 2001-2024 WisFaq
WisFaq - de digitale vraagbaak voor het wiskunde onderwijs - http://www.wisfaq.nl

#39339 - Telproblemen - Leerling bovenbouw havo-vwo