Gå til innhold

Trenger program som finner bestemte siffer?


Anbefalte innlegg

Jeg trenger et program som kan finne et spesifikt siffer fra en lang liste med tall. Eller plukker ut de nærmeste utfallene som ligner på det sifferet jeg leter etter.

 

Jeg legger inn alle sifferene i programmet. Bestemmer meg for et siffer. Skriver sifferet jeg spesifikt er ute etter. Programmet søker gjennom listen over alle tallene jeg la inn i. Programmet henter ut de nærmest lignende utfallene.

 

Finnes det noe slikt?

Endret av Gammelsko
Lenke til kommentar
Videoannonse
Annonse

Excel kan sikkert gjøre dette med litt hjelp.

Men hva mener du med "utfall" og hva mener du med "ligner på" ? Hva ligner mest på 820, er det 779 (nærme) eller 82 (teksten inneholder), eller hva ? Et siffer er et heltall mellom 0 og 9, en lang liste tall vi trolig inneholde atskillige forekomster og multipler av disse, hva da ? Det ville hjelpe en del å skjønne hva dette er til.

 

Beste hilsen Harald

Lenke til kommentar

Jeg har feks. et bestemt tall: 65489032

 

jeg skal finne tall som ligner mest mulig på denne tall rekken i samme tallmessige rekkefølge utifra en liste med mange andre tall som alle har 8 siffer.

 

Jeg er ikke nødvendigvis ute etter tall som er helt identiske tallet jeg søker med. Men tall som ligner på søketallet hvor 1 eller 2 tall kan være annerledes fra 65489032.

 

 

Jeg er ikke god med tall og jeg kan lite eller ingenting om koding. Så det er sagt.

Lenke til kommentar
Som harald staff sier kan du bruke excel til dette.

 

Nærmere bestemt funksjonen "countif".

Denne krever definisjon av område og kriterie den skal se etter.

 

f. eks.

=Countif(a1:a20;2)

 

Dette vil telle antall 2ere i området a1 til og med a10

6473239[/snapback]

 

Jeg har ikke exel tilgjengelig akkurat nå. Men takk for tipset :)

Lenke til kommentar

Jeg har laget et lite pythonprogram som jeg tror skal løse problemet ditt.

 

For å kjøre det må du ha lagt inn python, kjører du windows må du legge inn fra http://www.python.org/download/releases/2.4.3/ , har du linux ligger det vel inn fra før.

 

Antar at du har dataene i tekstfiler

11124
54656
23443
11224
11134

Her er det tallet du leter etter øverst (altså 11124). VIKTIG: Når du lager inputfilene må du huske dette.

 

har laget script som er som følgende:

Skjult tekst: (Marker innholdet i feltet for å se teksten):

from sys import stdin


def antallfeil(tall1, tall2):

antallfeil = 0

i = 0
#	print len(tall1)
while i <len(tall1):
 if tall1[i] != tall2[i]: 
 	antallfeil = antallfeil + 1
 i = i+1

return antallfeil

#print antallfeil("111","112")

def main():

hovedtall =  stdin.readline()
minsteantallfeil = 100000000
minstetall = []
for tall in stdin:
 antallfeil1 = antallfeil(hovedtall,tall)

 if antallfeil1 < minsteantallfeil:
 	minstetall =[tall]
 	minsteantallfeil = antallfeil1
 elif antallfeil1==minsteantallfeil:
 	minstetall.append(tall)

print "Tall aa sammenligne med: ", hovedtall
print "Folgende tall er minst:"
for tall in minstetall:
 print tall

print "Antall feil: ", minsteantallfeil

main()

 

For å kjøre scriptet må man åpne en kommandolinje og browse til den katalogen scriptet ligger, og så skrive

python tall.py <input.txt

hvis inputen heter input.txt. Husk å ta med ditt python-directory i windows-pathen, ellers kommer det opp en feilmelding om at "python er en ukjent kommando" eller noe

 

Legger ved .py-fila og inputfila for testing.

 

Lykke til, spør hvis det er noe du ikke forstår.

tall.zip

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...