Eenvoudig rekensommetje

Opgaven en tips voor programmeerwedstrijden.

Re: Eenvoudig rekensommetje

Berichtdoor hbh-tieltjes » vr maart 20, 2009 8:32 pm

Ik heb de listing even getest, daarbij bleken 4 regels niet te voldoen.
Geen idee of je met deze listing verder komt, je kunt het proberen.
Vind het leuk dat er mensen mee bezig zijn.
Er zullen ongetwijfeld verschillende oplossingen mogelijk zijn.
Ik ga op een nieuw project [uitleg rekensommetje ] mijn oplossing uitleggen.
Dit gaat in een aantal delen, waar ik weer reacties op hoop te krijgen.

gr. Herman
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Eenvoudig rekensommetje

Berichtdoor bluatigro » wo maart 25, 2009 4:38 pm

gordon

zet GEEN extra nullen achter t$( i )
omdat verschil OOK naar nullen kijkt
ziet hij die als dubbele cyfers
gebruik punten of spaties
daar kijkt verschil niet naar

hbh tieltjes

de routine in [uitleg rekensommetje]
werk langzaamer ( O( n ^ n ) )
dan mijn routine uitgebreid met een
permutatie routine ( O( n! ) )

saluton blua tigro
bluatigro
 
Berichten: 298
Geregistreerd: za sep 27, 2008 6:01 pm

Re: Eenvoudig rekensommetje

Berichtdoor bluatigro » zo maart 29, 2009 11:29 am

Code: Selecteer alles
dim t$( 5 )
false = 0
true = not( false )
done = false
count = 0
while not( done ) and ( count < 10 ^ 10 )
 if ( count mod 12345 ) = 0 then
  cls
  print count
 end if
 count = count + 1
 nr$ = right$( "000000000000" + str$( count ) , 10 )
 a$ = left$( nr$ , 5 )
 b$ = right$( nr$ , 5 )
 if notwin( a$ ) and notwin( b$ ) then
  if left$( a$ , 1 ) <> "0" then
   if left$( b$ , 1 ) <> "0" then
    ia = val( a$ )
    ib = val( b$ )
    ic = ia * ib
    c$ = str$( ic )
    if notwin( c$ ) then
     for i = 0 to 4
      t$( i ) = str$( ia * val( mid$( b$ , 5 - i , 1 ) ) )
     next i
     if notwin( t$( 0 ) ) then
      if notwin( t$( 1 ) ) then
       if notwin( t$( 2 ) ) then
        if notwin( t$( 3 ) ) then
         if notwin( t$( 4 ) ) then
          done = true
         end if
        end if
       end if
      end if
     end if
    end if
   end if
  end if
 end if
wend
if count < 10 ^ 10 then
 print right$( "            " + a$ , 12 )
 print right$( "            " + b$ , 12 )
 print right$( "            " + t$( 0 ) , 12 )
 print right$( "            " + t$( 1 ) + "." , 12 )
 print right$( "            " + t$( 2 ) + ".." , 12 )
 print right$( "            " + t$( 3 ) + "..." , 12 )
 print right$( "            " + t$( 4 ) + "...." , 12 )
 print right$( "            " + c$ , 12 )
else
 print "NO SOLUTION FOUNT !!"
end if

end

function notwin( q$ )
 fl = true
 for digit = 0 to 9
  tel = 0
  for i = 1 to len( q$ )
   if mid$( q$ , i , 1 ) = str$( digit ) then
    tel = tel + 1
   end if
   if tel > 1 then fl = false
  next i
 next digit
 notwin = fl
end function


ik vond 10 for next lussen wel wat veel
dus doe ik het met een while lus
het druurt mij nog te lang ( O( n ^ n ) )
ik heb nog geen oplossing gezien
maar als die er is dan vindt dit programma die
wie met n copiler kijkt wat er uit komt ?

saluton blua tigro
bluatigro
 
Berichten: 298
Geregistreerd: za sep 27, 2008 6:01 pm

Re: Eenvoudig rekensommetje

Berichtdoor hbh-tieltjes » zo maart 29, 2009 7:44 pm

Hallo bluatigro

Heb jouw prog getest en na ruim een half uur onderbroken.
Mijn prog heeft voor het totale onderzoek 10 minuten nodig.
Na hoeveel tijd is jouw prog afgelopen?
Het voordeel van 10 lussen is dat je altijd 10 verschilende cijfers hebt.

gr. Herman
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Eenvoudig rekensommetje

Berichtdoor bluatigro » vr apr 10, 2009 10:39 am

Code: Selecteer alles
global n = 4
dim nr$( n )

for i = 1 to n
   nr$( i ) = str$( i )
next i

call loop n , n

end

sub loop i , j
   if i > 0 then
      if j = i then
         call loop i , j - 1
         swap nr$( i ) , nr$( j )
         call loop i - 1 , n
         swap nr$( i ) , nr$( j )
      end if
   else
      draw
   end if
end sub

sub draw
   for i = 1 to n
      print nr$( i ) ;
   next i
   print
end sub

dit heb ik van internet uit n c++ voorbeeld
op de plaats van draw komt de rekensom
op deze manier heb je nooit dubele cijfers
in de 2 start getallen .
heeft nog wat werk nodig oa :
van n=4 n=9 en van i>0 i>-1 maken denk ik
---------------------------------------------------------------------------------------------------------------
cxio diversas el tio rezultas cxio samvaloras .
bluatigro
 
Berichten: 298
Geregistreerd: za sep 27, 2008 6:01 pm

Re: Eenvoudig rekensommetje

Berichtdoor hbh-tieltjes » ma apr 20, 2009 3:14 pm

Hallo bluatigro

Dit is beslist geen C++ voorbeeld of heb je dit uit C++ vertaald ?
Het zouw best een Basic dialect kunnen zijn maar welke weet ik ook niet.
Herkent iemand deze prog-taal of kan iemand deze omzetten naar LB of JB ?
Ik kan er zelf geen kaas van maken, maar anderen misschien wel.

gr. Herman
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Eenvoudig rekensommetje

Berichtdoor anthonio » di apr 21, 2009 12:35 am

Herman,

Ik ben niet echt op de hoogte van dit project maar ik heb bovenstaande code even vertaald.
Normaal zou dit de LB versie zijn.

Code: Selecteer alles
global n
n = 4
dim nr$( n )

for i = 1 to n
   nr$( i ) = str$( i )
next i

call herhaling n , n

end

sub herhaling i , j
   if i > 0 then
      if j = i then
         call herhaling i , j - 1
         nr2$( i ) = nr$( j )
         nr2$( j ) = nr$( i )
         nr$(i) = nr2$(i)
         nr$(j) = nr2$(j)
         call herhaling i - 1 , n
         nr2$( i ) = nr$( j )
         nr2$( j ) = nr$( i )
         nr$(i) = nr2$(i)
         nr$(j) = nr2$(j)
      end if
   else
      call draw
   end if
end sub

sub draw
   for i = 1 to n
      print nr$( i )
   next i
   print nr$(i)
end sub


Groeten
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm

Re: Eenvoudig rekensommetje

Berichtdoor hbh-tieltjes » di apr 21, 2009 10:06 am

Anthonio

Ik heb dit prog. even getest maar krijg geen output.
Wat doet dit prog. en welke output mag ik verwachten ?
Kun je het prog. zo aanpassen dat ik wat op het scherm zie eventueel met uitleg.

B.v.d. en gr. Herman
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Eenvoudig rekensommetje

Berichtdoor anthonio » di apr 21, 2009 9:59 pm

Herman,

Ik heb dit inderdaad gisteren ook gemerkt.
Nu, ik heb alleen het programma geconverteerd.
Je moet maar eens in debug mode het programma stap voor stap laten runnen.
Je kan alles zien wat er gebeurd.
Door dit te doen heb ik gemerkt dat het programma niet bij de functie "draw" komt.
Als bluatigro (<- is dat spaans trouwens?) dit leest kan hij misschien hierover een woordje uitleg geven.

Groeten.
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm

Re: Eenvoudig rekensommetje

Berichtdoor anthonio » di apr 21, 2009 10:08 pm

Misschien dat je hier wat meer aan hebt?

Code: Selecteer alles
global n
n = 4
dim nr$( n )

for i = 1 to n
   nr$( i ) = str$( i )
next i

call herhaling n , n

end

sub herhaling i , j
   if i > 0 then
    print i
    print j
    print ""
      if j = i then
         call herhaling i , j - 1
         nr2$( i ) = nr$( j )
         nr2$( j ) = nr$( i )
         nr$(i) = nr2$(i)
         nr$(j) = nr2$(j)
         print nr$(i)
         print nr$(j)
         print ""
         call herhaling i - 1 , n
         nr2$( i ) = nr$( j )
         nr2$( j ) = nr$( i )
         nr$(i) = nr2$(i)
         nr$(j) = nr2$(j)
         print nr$(i)
         print nr$(j)
         print ""
      end if
   else
      call draw
   end if
end sub

sub draw
   for i = 1 to n
      print nr$( i )
   next i
   print nr$(i)
end sub


Groeten
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm

Re: Eenvoudig rekensommetje

Berichtdoor hbh-tieltjes » wo apr 22, 2009 7:44 pm

Er is nu wel output, maar wat kan ik daar mee ?
Even een andere vraag.
Is dat GLOBAL statement wel nodig of is het overbodig ?
Volgens mij is de sterke kant van LB en JB dat je niets hoeft te Definitiëren (Declareren).
Ik heb ergens gelezen dat JB en LB alle tipes herkent zodat je niets hoeft op te geven.
Heb ik gelijk of heb ik het mis ?

gr. Herman
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Re: Eenvoudig rekensommetje

Berichtdoor anthonio » do apr 23, 2009 11:11 am

Ik denk dat bluatiagro met dit voorbeeld wil aantonen hoe je getallen kan swappen (omwisselen).
Dit leid ik toch af uit de output.
De meeste zaken worden in LB direct herkent.
Bij API calls is dit dikwijls het geval dat je constanten moet declareren die LB niet herkent.
In het bovenstaande voorbeeld wordt n globaal gemaakt aangezien je het gebruikt in verschillende subs.
Maw als je constanten, variabelen, ... gaat gebruiken in verschillende functies/subs/andere delen van je programma is
het aan te raden om deze globaal te maken.
Hetzelfde geldt voor arrays.
denk maar aan
Code: Selecteer alles
dim info$(10, 10)


Groeten
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm

Re: Eenvoudig rekensommetje

Berichtdoor hbh-tieltjes » vr sep 25, 2009 10:10 pm

Zullen we dit afsluiten ??

Gr. Herman
hbh-tieltjes
 
Berichten: 53
Geregistreerd: di nov 11, 2008 11:44 am

Vorige

Keer terug naar Uitdagingen en wedstrijden

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron