Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

usporedivanje brojeva

28 views
Skip to first unread message

nescafe

unread,
Apr 30, 2012, 12:47:47 PM4/30/12
to
Htio bi si napisati neku skriptu za čitanje brojeva iz nekog text filea
( liniju po liniju ) i uspoređivanje istih.

Npr.

1 2 3 4 5 9
6 2 8 9 0 11

Rezultat: 2 i 9

Ima tko kakvu jednostavnu ideju ( skriptu )

Eden Kirin

unread,
Apr 30, 2012, 2:36:40 PM4/30/12
to
Evo nešto zmrljano na brzinu, bez error handlinga. Čitaju se dvije
linije iz datoteke i ispisuje presijek setova. Dalje nastavi po želji...

#!/usr/bin/python

line_to_set = lambda line: set([n for n in line.strip().split(" ") if
n.isdigit()])

f = open("brojevi.txt")
l1 = line_to_set(f.readline())
l2 = line_to_set(f.readline())

print list(l1.intersection(l2))


--
www.repetitor.hr -/- www.vikendi.com -/- www.svimi.net

Luka Ćavara

unread,
Apr 30, 2012, 2:44:13 PM4/30/12
to
$ cat test02.txt

1 2 3 4 5 9
6 2 8 9 0 11


$ lt="";while read l;do for a in $lt;do for b in $l; do if (( a==b
));then echo "$a/$b";fi;done;done; lt=$l;echo "[$l]"; done <test02.txt

[1 2 3 4 5 9]
2/2
9/9
[6 2 8 9 0 11]
[]

nescafe

unread,
Apr 30, 2012, 4:09:11 PM4/30/12
to
----------------------
@edin
Nemam instalirani python tako da nisam mogao isprobat.

@Luka
zanimljivo ali me malo muči ispis. Da li mogu sve brojeve koji se
ponavljaju ispisati na kraju i u jednoj liniji. Npr ako u txt fileu imaš
20 linija razlicitih brojeva. Skripta prode sve i ispise one koji se
ponavljaju. Ako se isti broj ponavlja vise puta nije važno, na kraju se
ispise samo jednom.

1 2 3 4 5 9
6 2 8 9 0 11
5 6 7 1 9 12
9 22 11 12 4 1
-----------------
1 2 4 5 6 9 11 12

Drazen Kacar

unread,
Apr 30, 2012, 9:07:17 PM4/30/12
to
nescafe wrote:

> zanimljivo ali me malo muči ispis. Da li mogu sve brojeve koji se
> ponavljaju ispisati na kraju i u jednoj liniji. Npr ako u txt fileu imaš
> 20 linija razlicitih brojeva. Skripta prode sve i ispise one koji se
> ponavljaju. Ako se isti broj ponavlja vise puta nije važno, na kraju se
> ispise samo jednom.

Zsh skripta:

#!/bin/zsh

unset an
while read -A; do
for ((i=1; i<=$#reply; i++)); do
n=$reply[$i]
an[$n]=$(($an[$n] + 1))
done
done
for ((i=1; i<=$#an; i++)); do
[[ $an[$i] -gt 1 ]] && echo -n "$i "
done; echo

Radi samo s pozitivnim brojevima na ulazu. Ako hoćeš i negativne, stavi ih
u drugo polje. Ako hoćeš i nulu, broji je posebno ili dodaj svakom ulaznom
broju jedan. Moraš nešto i sam napraviti oko svog domaćeg rada. :-)

--
.-. .-. Yes, I am an agent of Satan, but my duties are largely
(_ \ / _) ceremonial.
|
| da...@fly.srk.fer.hr

Eden Kirin

unread,
May 1, 2012, 5:56:43 AM5/1/12
to
On 30.04.2012 22:09, nescafe wrote:

> @edin
> Nemam instalirani python tako da nisam mogao isprobat.

Kakav ti je to linux bez pitona? :)

Luka Ćavara

unread,
May 1, 2012, 7:46:08 AM5/1/12
to
On 04/30/2012 10:09 PM, nescafe wrote:

> @Luka
> zanimljivo ali me malo muči ispis. Da li mogu sve brojeve koji se
> ponavljaju ispisati na kraju i u jednoj liniji. Npr ako u txt fileu imaš
> 20 linija razlicitih brojeva. Skripta prode sve i ispise one koji se
> ponavljaju. Ako se isti broj ponavlja vise puta nije važno, na kraju se
> ispise samo jednom.
>
> 1 2 3 4 5 9
> 6 2 8 9 0 11
> 5 6 7 1 9 12
> 9 22 11 12 4 1
> -----------------
> 1 2 4 5 6 9 11 12

cat probe03.txt;echo "-----------------"; cat probe03.txt|tr ' '
'\n'|sort -n|uniq -d|tr '\n' ' ';echo ""

Luka Ćavara

unread,
May 2, 2012, 7:19:23 AM5/2/12
to
Čovjek se ne javlja, možda misli da je zafrkancija (tj. ne vjeruje da se u linuksu s jednim
naredbenim redkom može odraditi tako "komplikovan task" ;)

Dakle da pojasnim:

Strpaš sve brojeve u datoteku brojevi.txt i izvršiš naredbu:

cat brojevi.txt;echo "-----------------";cat brojevi.txt|tr ' ' '\n'|sort -n|uniq -d|tr '\n' ' ';echo

tr ' ' '\n poslaže sve brojeve u jednu kolonu, sort -n ih sortira kao brojeve (ne kao znakove), uniq -d
izdvoji one koji se pojavljuju dva ili više puta, a posljednji tr '\n' ' ' ispiše rezultat u red u mjesto
kolone, a echo doda redak za prompt.



--
Tko god što radi, sebi radi.

nescafe

unread,
May 3, 2012, 1:30:29 PM5/3/12
to
----------------------
nice :-)
Nisam se stigao javiti jer sam bio na putu. Budem isprobao sutra ujutro
pa ti javim.

nescafe

unread,
May 8, 2012, 4:24:39 PM5/8/12
to
-->
evo konacno sam probao :-).
Radi bez greške. Daj mi reci da li bi se to dalo poboljsati na način da
ispisuje samo one brojeve koji su bili ponavljani npr 5 puta i kako mogu
najlakse formatirati ovaj tvoj ' ' ' u slučaju ako imam brojeve koji su
odvojeni s više razmaka ili tabulatorom.
Npr ako imam ovu situaciju:

Luka Ćavara

unread,
May 9, 2012, 7:39:13 AM5/9/12
to
echo;cat brojevi.txt|tr ' ' '\n'|sed 's/\s*//g'|sort -n|sed '/^\s*$/d'|awk '{if(x!=$1){if(y==5){print x }; y=1}else{y++};x=$1}'|tr '\n' ' ';echo -e " se ponavlja(ju) ni više ni manje nego točno (po) pet puta\n"
0 new messages