Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ALG] wiskundige berekening voor hobby

Pagina: 1
Acties:
  • 95 views sinds 30-01-2008

  • weca
  • Registratie: December 2004
  • Laatst online: 27-11 19:01
Voor mijn hobby GEOCACHING (www.geocaching.nl) moet ik iets programmeren.

Ik ben nu bezig met EXCEL en VBA, maar misschien nog beter is gebruik te maken van Delphi of VB express en de gegevens op te slaan in mijn NAS MySQL server.

De vraagstelling luidt (zie rode regel in de gegeven link): http://www.geocaching.com/seek/cache_details.aspx?wp=GC14yny
Van een getal, groter dan 14 digits/cijfers, moeten de linkse N digits deelbaar zijn door het (aantal) N digits.

De getallen die voldoen kunnen dus bijvoorbeeld niet beginnen met:
11 - 13 - oneven - 19 - 21 - .. - 99 (oneven getal bestaand uit 2 digits is niet deelbaar door 2)
...
110 - 111 - 114 - .. - 998 - 999 (999 is wel deelbaar door 3, maar de linkse 99 is niet deelbaar door 2)
...
1000


Dus een getal n1n2n3n4 moet deelbaar zijn door 4, daarvan moet n1n2n3 deelbaar zijn door 3, n1n2 moet deelbaar zijn door 2, n1 is altijd deelbaar door 1.

enzo door tot er binnen een reeks van N digits GEEN getal meer gevonden wordt dat aan de eis voldoet.

1) gevraagd wordt naar het aantal oplossingen
2) Sum of all digits (denkelijk van alle oplossingen de cross-sum, zie hieronder en bij 4))
3) het kleinste getal van 23 digits dat voldoet
4) het getal dat voldoet met de grootste cross-sum (*)

(*) Cross-sum = de som van alles losse getallen van een getal dat voldoet: 3272 = 3+2+7+2=14=cross-sum

Weet iemand hier een script voor te maken, in ieder geval voor punt 1,2 en 3, het lijkt met wel mogelijk om zelf van ieder getal de cross-sum te programmeren. Bijvoorbeeld door de getallen in Excel te plaatsen (als bijvoorbeeld tekst, alles te splitsen en daarna ale getallen op te tellen.)

Hartelijk dank voor de moeite en/of nuttige tips.

Carsten

Verwijderd

geocaching ziet er wel sjiek uit
dat wiskundig vraagstukje is wel interessant, ik kan je niet helpen, maar ben benieuwd naar het antwoord ;)

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Effe snel ingeragd op PHP, beschouw het maar als pseudocode ;)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  $N =5;

  $good_prefixes = array(1,2,3,4,5,6,7,8,9);

  for($n = 2; $n < $N; $n++)
  {
    $new_good_prefixes = array();
    foreach($good_prefixes as $g)
    {
      for($i=0;$i < 10; $i++)
      {
        $new = $g * 10 + $i;
        if( ($new % $n) == 0 )
        {
          $new_good_prefixes[] = $new;
        }
      }
    }
    $good_prefixes = $new_good_prefixes;
    echo "n = $n\n";
    print_r($good_prefixes);
    echo "\n=======\n";
  }


$N is het aantal digits wat ie doet.
Je houdt gewoon een array bij met goede prefixes, en kijkt voor elk getal wat je erachter plakt of het nieuwe getal klopt. Zo ja, dan sla je die nieuwe prefix op, en als je alle getallen hebt geprobeert heb je je nieuwe array met prefixes, en herhaal je het weer.

[disclaimer] niet echt getest nog, eerst effe pizzatje eten.

[ Voor 3% gewijzigd door Grijze Vos op 22-08-2007 19:00 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Dido
  • Registratie: Maart 2002
  • Nu online

Dido

heforshe

Ik weet niet of het handig is om alle mogelijke getallen van 15 cijfers op die manier te gaan brute-forcen, Grijze Vos. Zeker niet omdat je daarna wellicht die van 16, 17, 18, 19, 20 etc ook nog wilt doen :X

Wat betekent mijn avatar?


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Dido schreef op woensdag 22 augustus 2007 @ 19:04:
Ik weet niet of het handig is om alle mogelijke getallen van 15 cijfers op die manier te gaan brute-forcen, Grijze Vos. Zeker niet omdat je daarna wellicht die van 16, 17, 18, 19, 20 etc ook nog wilt doen :X
Mja, dat was mijn eerste aanzet in pseudocode. ;)
Meer even om te kijken hoeveel antwoorden je dan krijgt rond de 15, als dat niet al te hoog ligt dan is het best te doen. Mijn mathematica kan dat bijvoorbeeld prima behappen denk ik.


N=14 levert me iets van 1000 antwoorden op, bij N=15 houdt PHP het voor gezien, aangezien die grote getallen niet lief vind. Maar 1000 is nog best te overzien. Je kunt wel heel moeilijk gaan doen, maar als de groei zo klein blijft (of misschien wel het aantal antwoorden weer omlaag gaat), zie ik niet in waarom je moeilijk moet gaan doen om allemaal efficiente trucks toe te passen. Da's de moeite niet waard, als je ook 20 minuten kan wachten op een brute force. ;)

[ Voor 28% gewijzigd door Grijze Vos op 22-08-2007 19:22 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Weet iemand hier een script voor te maken, in ieder geval voor punt 1,2 en 3, het lijkt met wel mogelijk om zelf van ieder getal de cross-sum te programmeren. Bijvoorbeeld door de getallen in Excel te plaatsen (als bijvoorbeeld tekst, alles te splitsen en daarna ale getallen op te tellen.)
Ja dat is mogelijk......

....

....

....

Maar is dat ook wat je horen wilt?

Zie aub Programming Beleid en dan met name Programming Beleid - De Quickstart voor wat we eigenlijk van een topicstart verwachten. We verwachten hier eigenlijk dat je minstens zelf al met wat ideeen komt i.p.v. puur alleen de vraag te stellen en hopen dat je wat code toegespeelt krijgt.

Opzich kan het een interresant topic worden maar dan zal het iets anders moeten worden ingestoken.

[ Voor 6% gewijzigd door Creepy op 22-08-2007 20:18 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.