Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλό...Ασφαλώς δεν έχει. Απλά ο περιορισμός του Int στη γλώσσα αυτή είναι θέμα. Αλλά δεν το σκέφτηκες καλά. Πριν από αυτόν τον περιορισμό παίζει και άλλος ένας. Πόσο μεγάλο πίνακα μπορούσε να φτιάξει σε ένα 128 kbyte Ram; Όπου από αυτή τη μνήμη παίρνει και η οθόνη; Αν θυμάμαι καλά δεν παίζει πίνακας μεγαλύτερος από 64 kbytes άρα το πολύ 16384 (διορθώθηκε) όριο. Μετά πας σε bit, με μετατροπή ή σε assembly Z80, και εκεί ξεφεύγεις από sign Int, ας πούμε σε 100 kbytes θα έχεις 800000 το μέγιστο.

Δεν είχα Amstrad. Τον είχα χειριστεί ελάχιστα. Είχα Acorn μηχανήματα με BBC BASIC, που είχε 4 bytes Integer.

Επεξ/σία από M2000
  • Απαντ. 505
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Δημοσ.

Καλό...Ασφαλώς δεν έχει. Απλά ο περιορισμός του Int στη γλώσσα αυτή είναι θέμα. Αλλά δεν το σκέφτηκες καλά. Πριν από αυτόν τον περιορισμό παίζει και άλλος ένας. Πόσο μεγάλο πίνακα μπορούσε να φτιάξει σε ένα 128 kbyte Ram; Όπου από αυτή τη μνήμη παίρνει και η οθόνη; Αν θυμάμαι καλά δεν παίζει πίνακας μεγαλύτερος από 64 kbytes άρα το πολύ 16768 όριο. Μετά πας σε bit, με μετατροπή ή σε assembly Z80, και εκεί ξεφεύγεις από sign Int, ας πούμε σε 100 kbytes θα έχεις 800000 το μέγιστο.

Δεν είχα Amstrad. Τον είχα χειριστεί ελάχιστα. Είχα Acorn μηχανήματα με BBC BASIC, που είχε 4 bytes Integer.

μόνο τραγωδία μπορώ να χαρακτηρίσω το παραπάνω

Ένα integer overflow στον κύριο !

Δημοσ.

Φαντάσου...από 128 Kbytes πριν 35 χρόνια, έχουμε σήμερα για πλάκα 2048000 kbytes.. 16000 φορές παραπάνω.Αλλά συνεχίζουμε να ασχολούμαστε με πρώτους ..από 1 έως 100, και θέλουμε να γίνεται...με ότι άλλο κατεβάσει η κούτρα μας.

Ασφαλώς Τραγικό....

Φαντάσου...από 128 Kbytes πριν 35 χρόνια, έχουμε σήμερα για πλάκα 2048000 kbytes.. 16000 φορές παραπάνω.Αλλά συνεχίζουμε να ασχολούμαστε με πρώτους ..από 1 έως 100, και θέλουμε να γίνεται...με ότι άλλο κατεβάσει η κούτρα μας.

Ασφαλώς Τραγικό....

 

(16384... στο προηγούμενο...μήνυμα..όχι 16768..)

Δημοσ.

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, και θέλουμε να γίνεται...με ότι άλλο κατεβάσει ή κούτρα μας.

Ασφαλώς Τραγικό....

 

Τραγικό είναι το να ασχολείται κανείς με ο,τι μαλακία κατεβάσει η κούτρα του όπως λες και να βαφτίζει το παραγόμενο έκτρωμα "προσανατολισμένο στην εκμάθηση" και άλλα φαιδρά.

 

Το να εξετάζει κανείς προσεγγίσεις με διαφορετική νοοτροπία από την άλλη είναι όντως σκόπιμο διδακτικά. Αναγνωρίζω βέβαια ότι ως συνήθως δεν καταλαβαίνεις για τι πράγμα μιλάμε, πόσο μάλλον με ποιό τρόπο είναι διαφορετικό, οπότε δεν έχω απαιτήσεις.

Δημοσ.

Να λέμε την αλήθεια, μου άρεσε το πρόγραμμά σου. Δεν θα το χρησιμοποιούσα για να βρω 1000000 πρώτους, ή για την ακρίβεια δεν θα το χρησιμοποιούσα καθόλου. Όμως ως μια πρόταση με ειδικό χειρισμό συναρτησιακού προγραμματισμού είναι οκ. Είναι για διάβασμα δηλαδή, μια άσκηση.

Τα χαζά έμμεσα για τη Μ2000, περί φαιδρότητας, είναι για να καταπραΰνει τον εγωισμό...Είναι για το λόγο αυτό...αποδεκτά.

 

Πάω να κάνω εξάσκηση στο pong που έφτιαξα. Έχω βαφτίσει Defacer τον αντίπαλο...να το ευχαριστηθώ...

  • Like 1
Δημοσ.

Αυτό που μια κατηγορία ανθρώπων (στην οποία δυστυχώς περιλαμβάνεσαι και συ) δυσκολεύεται ιδιαίτερα να καταλάβει είναι ότι ο "αντίπαλος" είναι πρόσωπο μόνο στην πολιτική. Στην επιστήμη αντίπαλος είναι η ημιμάθεια και η παραπληροφόρηση.

Δημοσ.

Σώπα ρε Επιστήμονα....

Βάλε στο νου σου βέβαια ότι ο άνθρωπος...δεν βγήκε από την επιστήμη...την δημιούργησε. Προφανώς η επιστήμη, είναι το απόσταγμα ημιμαθών και παραπληροφορημένων, που με τα χρόνια... και την άσκηση...βλέπε πειράματα...άνοιξαν τα μάτια τους και των άλλων.

Και η Μ2000 πείραμα είναι.

Δημοσ.

Να λέμε την αλήθεια, μου άρεσε το πρόγραμμά σου. Δεν θα το χρησιμοποιούσα για να βρω 1000000 πρώτους, ή για την ακρίβεια δεν θα το χρησιμοποιούσα καθόλου. Όμως ως μια πρόταση με ειδικό χειρισμό συναρτησιακού προγραμματισμού είναι οκ. Είναι για διάβασμα δηλαδή, μια άσκηση.

Τα χαζά έμμεσα για τη Μ2000, περί φαιδρότητας, είναι για να καταπραΰνει τον εγωισμό...Είναι για το λόγο αυτό...αποδεκτά.

 

Πάω να κάνω εξάσκηση στο pong που έφτιαξα. Έχω βαφτίσει Defacer τον αντίπαλο...να το ευχαριστηθώ...

 

χαχαχαχ καλο.

  • Like 1
Δημοσ.

DDevil,

όλοι καλοί είμαστε...εδώ κάνω λίγο χιούμορ. Επιπλέον έφτιαξα το Pong2 (παίζει πιο επιθετικά ο αντίπαλος...κάνει "κατεβασιές"...)

Δημοσ.

Βεβαίως. 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++

Δημοσ.

αυτά τα κόλπα γίνονται σε c++; ( προφανώς όχι 99, από τελευταίες εκδόσεις αν έχει κάτι ) ξέρω πως από την 11 έχεις lambdas αλλά τι είδους support υπάρχει; το λέω γιατί μου θύμισε λίγο scala και θέλω να δω κατά πόσο μπορώ να μεταφέρω αυτό το στυλ και σε c++

Δες εδώ.

Δημοσ.

Μέχρι να λύσω το θέμα με τα 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 object
Function 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) \\ 13
Print G.Val(8) \\ 14

Δημοσ.

αυτά τα κόλπα γίνονται σε c++; ( προφανώς όχι 99, από τελευταίες εκδόσεις αν έχει κάτι ) ξέρω πως από την 11 έχεις lambdas αλλά τι είδους support υπάρχει; το λέω γιατί μου θύμισε λίγο scala και θέλω να δω κατά πόσο μπορώ να μεταφέρω αυτό το στυλ και σε c++

Πανω κατω ναι, απλα στη c# εχει ζαχαριτσα :P

πχ 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;
}

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...