M2000 Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 (επεξεργασμένο) Καλό...Ασφαλώς δεν έχει. Απλά ο περιορισμός του Int στη γλώσσα αυτή είναι θέμα. Αλλά δεν το σκέφτηκες καλά. Πριν από αυτόν τον περιορισμό παίζει και άλλος ένας. Πόσο μεγάλο πίνακα μπορούσε να φτιάξει σε ένα 128 kbyte Ram; Όπου από αυτή τη μνήμη παίρνει και η οθόνη; Αν θυμάμαι καλά δεν παίζει πίνακας μεγαλύτερος από 64 kbytes άρα το πολύ 16384 (διορθώθηκε) όριο. Μετά πας σε bit, με μετατροπή ή σε assembly Z80, και εκεί ξεφεύγεις από sign Int, ας πούμε σε 100 kbytes θα έχεις 800000 το μέγιστο. Δεν είχα Amstrad. Τον είχα χειριστεί ελάχιστα. Είχα Acorn μηχανήματα με BBC BASIC, που είχε 4 bytes Integer. Επεξ/σία 2 Απριλίου 2016 από M2000
Επισκέπτης Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Καλό...Ασφαλώς δεν έχει. Απλά ο περιορισμός του Int στη γλώσσα αυτή είναι θέμα. Αλλά δεν το σκέφτηκες καλά. Πριν από αυτόν τον περιορισμό παίζει και άλλος ένας. Πόσο μεγάλο πίνακα μπορούσε να φτιάξει σε ένα 128 kbyte Ram; Όπου από αυτή τη μνήμη παίρνει και η οθόνη; Αν θυμάμαι καλά δεν παίζει πίνακας μεγαλύτερος από 64 kbytes άρα το πολύ 16768 όριο. Μετά πας σε bit, με μετατροπή ή σε assembly Z80, και εκεί ξεφεύγεις από sign Int, ας πούμε σε 100 kbytes θα έχεις 800000 το μέγιστο. Δεν είχα Amstrad. Τον είχα χειριστεί ελάχιστα. Είχα Acorn μηχανήματα με BBC BASIC, που είχε 4 bytes Integer. μόνο τραγωδία μπορώ να χαρακτηρίσω το παραπάνω Ένα integer overflow στον κύριο !
M2000 Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Φαντάσου...από 128 Kbytes πριν 35 χρόνια, έχουμε σήμερα για πλάκα 2048000 kbytes.. 16000 φορές παραπάνω.Αλλά συνεχίζουμε να ασχολούμαστε με πρώτους ..από 1 έως 100, και θέλουμε να γίνεται...με ότι άλλο κατεβάσει η κούτρα μας. Ασφαλώς Τραγικό.... Φαντάσου...από 128 Kbytes πριν 35 χρόνια, έχουμε σήμερα για πλάκα 2048000 kbytes.. 16000 φορές παραπάνω.Αλλά συνεχίζουμε να ασχολούμαστε με πρώτους ..από 1 έως 100, και θέλουμε να γίνεται...με ότι άλλο κατεβάσει η κούτρα μας. Ασφαλώς Τραγικό.... (16384... στο προηγούμενο...μήνυμα..όχι 16768..)
defacer Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Note πως αντί για int.MaxValue έχω βάλει short.MaxValue σαν workaround Νομίζω ακόμα καλύτερα να μπει το limit εκεί. Δε σε κάνει να αναρωτιέσαι what is special about that number. Μούφα...πρόγραμμα.....και ο λόγος; Όταν έχεις βγάλει το πολλαπλάσια του 2, με πίνακα, τότε δεν υπάρχουν ούτε του 4, ούτε του 8 κοκ...Οπότε ο σωστός αλγόριθμος ποτέ δεν θα πάει στο 4 για να βγάλει τα πολλαπλάσια!!!!!! Defacer έλαβες Μαθηματικά...0 "Δυστυχώς" αν γίνει με τον πατροπαράδοτο τρόπο τότε αναγκαστικά πρέπει να υπάρχει shared state, οπότε χάνεις το πλεονέκτημα ότι η υλοποίηση είναι με functional προσέγγιση και σου μένει μόνο το πρακτικά ανούσιο "αντί για for το κάνω με LINQ". Φαντάσου...από 128 Kbytes πριν 35 χρόνια, έχουμε σήμερα για πλάκα 2048000 kbytes.. 16000 φορές παραπάνω.Αλλά συνεχίζουμε να ασχολούμαστε με πρώτους ..από 1 έως 100, και θέλουμε να γίνεται...με ότι άλλο κατεβάσει ή κούτρα μας. Ασφαλώς Τραγικό.... Τραγικό είναι το να ασχολείται κανείς με ο,τι μαλακία κατεβάσει η κούτρα του όπως λες και να βαφτίζει το παραγόμενο έκτρωμα "προσανατολισμένο στην εκμάθηση" και άλλα φαιδρά. Το να εξετάζει κανείς προσεγγίσεις με διαφορετική νοοτροπία από την άλλη είναι όντως σκόπιμο διδακτικά. Αναγνωρίζω βέβαια ότι ως συνήθως δεν καταλαβαίνεις για τι πράγμα μιλάμε, πόσο μάλλον με ποιό τρόπο είναι διαφορετικό, οπότε δεν έχω απαιτήσεις.
M2000 Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Να λέμε την αλήθεια, μου άρεσε το πρόγραμμά σου. Δεν θα το χρησιμοποιούσα για να βρω 1000000 πρώτους, ή για την ακρίβεια δεν θα το χρησιμοποιούσα καθόλου. Όμως ως μια πρόταση με ειδικό χειρισμό συναρτησιακού προγραμματισμού είναι οκ. Είναι για διάβασμα δηλαδή, μια άσκηση. Τα χαζά έμμεσα για τη Μ2000, περί φαιδρότητας, είναι για να καταπραΰνει τον εγωισμό...Είναι για το λόγο αυτό...αποδεκτά. Πάω να κάνω εξάσκηση στο pong που έφτιαξα. Έχω βαφτίσει Defacer τον αντίπαλο...να το ευχαριστηθώ... 1
defacer Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Αυτό που μια κατηγορία ανθρώπων (στην οποία δυστυχώς περιλαμβάνεσαι και συ) δυσκολεύεται ιδιαίτερα να καταλάβει είναι ότι ο "αντίπαλος" είναι πρόσωπο μόνο στην πολιτική. Στην επιστήμη αντίπαλος είναι η ημιμάθεια και η παραπληροφόρηση.
M2000 Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Σώπα ρε Επιστήμονα.... Βάλε στο νου σου βέβαια ότι ο άνθρωπος...δεν βγήκε από την επιστήμη...την δημιούργησε. Προφανώς η επιστήμη, είναι το απόσταγμα ημιμαθών και παραπληροφορημένων, που με τα χρόνια... και την άσκηση...βλέπε πειράματα...άνοιξαν τα μάτια τους και των άλλων. Και η Μ2000 πείραμα είναι.
DDevil Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Να λέμε την αλήθεια, μου άρεσε το πρόγραμμά σου. Δεν θα το χρησιμοποιούσα για να βρω 1000000 πρώτους, ή για την ακρίβεια δεν θα το χρησιμοποιούσα καθόλου. Όμως ως μια πρόταση με ειδικό χειρισμό συναρτησιακού προγραμματισμού είναι οκ. Είναι για διάβασμα δηλαδή, μια άσκηση. Τα χαζά έμμεσα για τη Μ2000, περί φαιδρότητας, είναι για να καταπραΰνει τον εγωισμό...Είναι για το λόγο αυτό...αποδεκτά. Πάω να κάνω εξάσκηση στο pong που έφτιαξα. Έχω βαφτίσει Defacer τον αντίπαλο...να το ευχαριστηθώ... χαχαχαχ καλο. 1
M2000 Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 DDevil, όλοι καλοί είμαστε...εδώ κάνω λίγο χιούμορ. Επιπλέον έφτιαξα το Pong2 (παίζει πιο επιθετικά ο αντίπαλος...κάνει "κατεβασιές"...)
the other one Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Βεβαίως. Sieve με LINQ λοιπόν: Func<int, IEnumerable<int>> nonPrimesUpTo = limit => Enumerable.Range(2, (int)(Math.Sqrt(limit)) - 1) .SelectMany(x => Enumerable.Range(2, limit / x).Select(y => x * y)) .Distinct(); Func<int, IEnumerable<int>> sieve = limit => Enumerable.Range(2, limit - 1) .Except(nonPrimesUpTo(limit)); foreach (var prime in sieve(100)) { Console.WriteLine(prime); } Μπορεί να γίνει και μονοκόμματο, το χώρισα για να διαβάζεται (kind of). αυτά τα κόλπα γίνονται σε c++; ( προφανώς όχι 99, από τελευταίες εκδόσεις αν έχει κάτι ) ξέρω πως από την 11 έχεις lambdas αλλά τι είδους support υπάρχει; το λέω γιατί μου θύμισε λίγο scala και θέλω να δω κατά πόσο μπορώ να μεταφέρω αυτό το στυλ και σε c++
groot Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 αυτά τα κόλπα γίνονται σε c++; ( προφανώς όχι 99, από τελευταίες εκδόσεις αν έχει κάτι ) ξέρω πως από την 11 έχεις lambdas αλλά τι είδους support υπάρχει; το λέω γιατί μου θύμισε λίγο scala και θέλω να δω κατά πόσο μπορώ να μεταφέρω αυτό το στυλ και σε c++ Δες εδώ.
the other one Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 γκούγκλαρα μισό λεπτό και αυτο που κατάλαβα είναι απλά πως το LINQ αφορά μόνο .NET νταξ είμαι χαζός
M2000 Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 Μέχρι να λύσω το θέμα με τα Non-Local (αν λυθεί ποτέ...) Αυτή είναι η λύση για High Order Function H Compose δίνει αντικείμενο και το αντικείμενο έχει μια Val() που εκτελεί του "ορισμούς" που έχουν αποθηκευτεί σε δυο αλφαριθμητικά. Ακόμα και να φύγουμε από το σημείο που είναι οι F και Twice, δηλαδή να "επιστρέψουμε" το αντικείμενο, θα υπάρχουν οι συναρτήσεις "μέσα του". το παράδειγμα το πήρα από python: >>> def twice(function):... return lambda x: function(function(x))>>> def f(x):... return x + 3>>> g = twice(f)>>> print g(7)13>>> print g(8)14 Και εδώ σε Μ2000 (αντί να έχω Read X και μετά = Χ+3 , με την Number διαβάζω την τιμή της παραμέτρου απευθείας στην έκφραση) \\ Higher-Order Function\\ no pointers - use of objectFunction F { =Number+3}Function Twice { read &F() =F(F(Number))}Function Compose { Group AA { A$, B$ Function Val { =Function(.A$,.B$, Number) } } Read AA.A$, AA.B$ =AA}G=Compose(&Twice(),&F())Print G.Val(7) \\ 13Print G.Val(8) \\ 14
παπι Δημοσ. 2 Απριλίου 2016 Δημοσ. 2 Απριλίου 2016 αυτά τα κόλπα γίνονται σε c++; ( προφανώς όχι 99, από τελευταίες εκδόσεις αν έχει κάτι ) ξέρω πως από την 11 έχεις lambdas αλλά τι είδους support υπάρχει; το λέω γιατί μου θύμισε λίγο scala και θέλω να δω κατά πόσο μπορώ να μεταφέρω αυτό το στυλ και σε c++ Πανω κατω ναι, απλα στη c# εχει ζαχαριτσα πχ transform σε C# (η Select) namespace FooBar { class Program { static void Main(string[] args) { var persons = new[] { new { Name = "foo", Age = 20 }, new { Name = "bar", Age = 44 } }; var names = persons.Transform(x => x.Name); foreach (var item in names) Console.WriteLine(item); } } public static class Foo { public static IEnumerable<R> Transform<R,T>(this IEnumerable<T> seq, Func<T,R> op) { foreach (var item in seq) yield return op(item); } } } Και το ιδιο σε C++ (η std::transform) template<class ItIn, class ItOut, class Op> void transform1(ItIn first, ItIn last, ItOut output, Op op) { for (; first != last; ++first) *++output = op(*first); } struct Person { std::string Name; int Age; }; int main(int argc, char **argv) { auto persons = std::vector<Person>{ Person{ "Foo", 20}, Person{"Bar", 34} }; std::vector<std::string> out; transform1(persons.begin(), persons.end(), std::back_inserter(out), [](const Person& p) {return p.Name; }); for (auto item : out) std::cout << item << std::endl; return 0; } 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα