Προτάσεις για απλά προγράμματα

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό UnKnown96 » 02 Αύγ 2011, 23:48

Λιπόν σε αυτό το θέμα θα κάνουμε προτάσεις για ΑΠΛΆ προγράμματα.

Μερικά παραδείγματα για το τι ενοούμε όταν λέμε απλά είναι:
Πρόγραμμα που θα βρίσκει τους παραγοντικούς αριθμούς.
Πρόγραμμα που θα βρίσκει τους τριγωνικούς αριθμούς.
Πρόγραμμα που θα βρίσκει τους τέλειους και φίλους αριθμούς.
Πρόγραμμα που θα βρίσκει τα δίσεκτα έτη.

Αυτά τα έχω κάνει ίδη και τα αναφερώ για όσους ψάχνουν για κάτι να φτιάξουν και για αυτούς που θα σχολιάσουν, να έχουν μια ιδέα για το πόσο απλό πρέπει να είναι το πρόγραμμα... Επείσης καλό θα ήταν μαζί με το πρόγραμμα αν γίνετε να δίνετε μια βασική θεωρία αν είναι κάτι παράξενο και ενας αλγόριθμος αν γίνετε. (Αυτά που έδωσα εγώ μπορείτε να βρείτε θεωρία και αλγόριθμους στο wikipedia!).

Όταν δίνετε λύσεις σε ένα πρόγραμμα, θα το βάζετε σε spoiler και από πάνω λέτε ποιό πρόγραμμα λύσατε και σε τι γλώσσα!
Ελπίζω να άνοιξα ενδιαφέρον θέμα!

Off topic:
MigF1 πηστεύω θα είσαι ο πρώτος που θα ποστάρει!!!
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό migf1 » 03 Αύγ 2011, 00:47

Μα έχουμε ήδη τέτοιο νήμα: viewtopic.php?f=61&t=19296
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό UnKnown96 » 03 Αύγ 2011, 09:52

1. Εκείνο είναι μόνο C.
2. Εδώ θέλουμε τους έμπειρους να βάλουν σε αρχάριους ασκήσεις απλές και να τις λύνουμε σε γλώσσα που ξέρουμε και μετά ο έμπειρος να την ελέγχει.
π.χ Ο medigeek θα βάλει μία άσκηση, ένας θα την λύση και θα την βάλει με spoiler, θα πει ποιά έλυσε και σε τι γλώσσα. Αν είναι σε Python ο έμπειρος (medigeek μάλλον ή κάποιος άλλος) θα πει στον αρχάριο τα λάθη του και θα τον βοηθείσει! Αυτό θέλουμε σε αυτό το θέμα, για αυτόν τον λόγο είπα απλές ασκήσεις!
Σε εκείνο το θέμα βάζουν ένα σορό ασκήσεις και όποιος τις λύσει... τις έλυσε! Εδώ το έφτιαξα για όσους ξεκινούν τώρα!
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό migf1 » 03 Αύγ 2011, 10:10

Α, δεν το είχα καταλάβει.

(καλημέρα κιόλας :) )
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό UnKnown96 » 03 Αύγ 2011, 11:12

Επείσης. :)
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό migf1 » 05 Αύγ 2011, 01:49

Γράψτε μια συνάρτηση που θα παίρνει ως ορίσματα δυο strings και θα ελέγχει για το αν το ένα είναι αναγραμματισμός του άλλου. Θα επιστρέφει TRUE αν είναι, FALSE αν δεν είναι (ή 1 και 0, αντίστοιχα).

Παραδείγματα:

"abcd", "dbca" δίνει TRUE
"helle", "hollo" δίνει FALSE
"z", "zzz" δίνει FALSE
"zzz", "z" δίνει FALSE
"z", "z" δίνει TRUE
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό migf1 » 06 Αύγ 2011, 01:03

migf1 έγραψε:Γράψτε μια συνάρτηση που θα παίρνει ως ορίσματα δυο strings και θα ελέγχει για το αν το ένα είναι αναγραμματισμός του άλλου. Θα επιστρέφει TRUE αν είναι, FALSE αν δεν είναι (ή 1 και 0, αντίστοιχα).

Παραδείγματα:

"abcd", "dbca" δίνει TRUE
"helle", "hollo" δίνει FALSE
"z", "zzz" δίνει FALSE
"zzz", "z" δίνει FALSE
"z", "z" δίνει TRUE

Δεν βλέπω συμμετοχή, ορίστε μερικές ιδέες για την υλοποίηση της άσκησης: viewtopic.php?p=201634#p201634
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό gravitalsun » 08 Αύγ 2011, 17:07

αναγραμματισμός
Κώδικας: Επιλογή όλων
perl -e "print (@ARGV[1] eq scalar(reverse @ARGV[0])?'TRUE':'FALSE')" abc cba


Παραγοντικό
Κώδικας: Επιλογή όλων
perl -e '$a=1; map{$a*=$_} (1..$ARGV[0]); print $a' 4
gravitalsun
babeTUX
babeTUX
 
Δημοσιεύσεις: 16
Εγγραφή: 08 Αύγ 2011, 16:44
Τοποθεσία: Αθήνα
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό Ilias95 » 12 Αύγ 2011, 19:16

Ένα απλό πρόγραμμα που μου ήρθε στο μυαλό και το υλοποίησα κιόλας, είναι η μετατροπή ενός δυαδικού αριθμού σε δεκαδικό και το αντίστροφο.
Παρακάτω οι λύσεις σε python:

Δυαδικός σε δεκαδικό:
Spoiler: show
Κώδικας: Επιλογή όλων
#!/usr/bin/python3

def dyadikos_se_dekadiko(n):
"""Μετατρέπει τον δυαδικό n σε δεκαδικό."""
n = str(n)
n = list(n)
for i in n:
assert i == '0' or i == '1', "Ο αριθμός που δώσατε δεν είναι δυαδικός."
dynami = 0
dekadikos = 0
while n:
psifio = int(n[-1]) * (2 ** dynami)
dekadikos += psifio
del n[-1]
dynami += 1
return(dekadikos)


Δεκαδικός σε δυαδικό:
Spoiler: show
Κώδικας: Επιλογή όλων
#!/usr/bin/python3

def dekadikos_se_dyadiko(n):
"""Μετατρέπει τον δεκαδικό n σε δυαδικό."""
lista = []
dynami = 0
while n != 0:
if (n - 2 ** dynami) >= 0:
dynami += 1
else:
lista.append('1')
dynami -= 1
n -= 2 ** dynami
dynami -= 1
while n < 2 ** dynami and dynami >= 0:
lista.append('0')
dynami -= 1
dynami = 0
return [print(i, end='') for i in lista]


Ο δεύτερος αλγόριθμος μου φάνηκε πιο δύσκολος, τον πρώτο τον έλυσα σε μερικά λεπτά.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Προτάσεις για απλά προγράμματα

Δημοσίευσηαπό Ilias95 » 12 Αύγ 2011, 19:28

migf1 έγραψε:Γράψτε μια συνάρτηση που θα παίρνει ως ορίσματα δυο strings και θα ελέγχει για το αν το ένα είναι αναγραμματισμός του άλλου. Θα επιστρέφει TRUE αν είναι, FALSE αν δεν είναι (ή 1 και 0, αντίστοιχα).

Παραδείγματα:

"abcd", "dbca" δίνει TRUE
"helle", "hollo" δίνει FALSE
"z", "zzz" δίνει FALSE
"zzz", "z" δίνει FALSE
"z", "z" δίνει TRUE


Όχι και η καλύτερη λύση σε python, αλλά δουλεύει:
Spoiler: show
Κώδικας: Επιλογή όλων
def anagram(s1, s2):
if len(s1) != len(s2):
return False
for i in s1:
if not i in s2:
return False
for i in s2:
if not i in s1:
return False
return True


Και το ίδιο σε μία σειρά:
Spoiler: show
Κώδικας: Επιλογή όλων
def anagram(s1, s2):
return False if len(s1) != len(s2) or not all(i in s2 for i in s1) or not all(i in s1 for i in s2) else True
Τελευταία επεξεργασία από Ilias95 και 16 Αύγ 2011, 00:33, έχει επεξεργασθεί 1 φορά/ες συνολικά
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι