Du Suchst Übung!?
-
Es gibt sehr einfache Lösungen mit Spezialisierungen einer Klasse.
Darf ich aus den Aliastemplates Klassentemplates machen?Edit: Gerade gesehen. Toll! Solche Aufgaben mag ich.

Edit²: Braucht man nicht.
-
Noch etwas.
Die Seite hat auch ein paar Schwächen.
Es fehlt z.B. Syntaxhighlighting.
Dann würde ich noch gerne auf einem Blick sehen können, wenn ich eine Aufgabe auswähle und MEINE bevorzuge Programmiersprache auswähle, in welchen anderen Programmiersprachen es schon Lösungen gibt.
Denn daraus kann man ja auch durchaus lernen. C, C++ und Java Code sind ja jetzt nicht so sehr verschieden.Auch würde ich gerne sehen, wieviele "Daumen hoch" Stimmen ein Codebeitrag bereits erhalten hat.
Um obiges, was ich im ersten Beitrag geschrieben habe, zu forcieren, wäre es vielleicht sinnvoll die Zeit, bei dem man Lösungen einreichen kanne und die Zeit, in der abgestimmt wird, zu begrenzen und dabei auch zu fordern, dass jeder Code bewertet werden muss.
Dadurch würde es zu einer Art Wettkampf werden und wirklich jeder, der Code einreicht, kriegt dann auch ne Bewertung.
Denn wer sich mal so Fragen-Antworten Portale angeguckt hat, der weiß, das der beste Beitrag zunehmend deswegen mehr "Daumen hoch" Bewertungen bekommt, weil er ganz oben ist und die anderen darunter ignoriert werden.
-
Wichtig ist einfach, dass main kompiliert.
Lol
#define static_assert(a, b) (void)0
-
Die C Ecke ist übrigens etwas unterrepräsentiert.
Ich schlage daher vor, dass man diesen Thread hier nach
"Rund um die Programmierung"
verschiebt, so dass auch C Coder von der Seite erfahren.
-
Eine Frage der Umsetzung schrieb:
Um obiges, was ich im ersten Beitrag geschrieben habe, zu forcieren, wäre es vielleicht sinnvoll die Zeit, bei dem man Lösungen einreichen kanne und die Zeit, in der abgestimmt wird, zu begrenzen und dabei auch zu fordern, dass jeder Code bewertet werden muss.
Im Augenblick ist es ja so, dass man für jede Lösung Punkte bekommt. Besser wäre, wenn nur höchstbewertete Punkte gibt. Dann sehen Anfänger gleich, welcher Stil der beste ist und es zählt nicht Masse, sondern Klasse.
Sone schrieb:
#define static_assert(a, b) (void)0Dadurch wird dein Programm ill-formed.
-
templer schrieb:
Sone schrieb:
#define static_assert(a, b) (void)0Dadurch wird dein Programm ill-formed.
Menno.
-
Hallo,
ich habe das Projekt hier schon einmal vorgestellt: LINK
Die Seite richtet sich in erster Linie natürlich an Anfänger und für Programmierer die auch in anderen Programmiersprachen in Übung bleiben wollen. Dennoch habe ich von Anfang an auch die Option offen gelassen Aufgaben auch für Frotgeschrittene und Profis zu erstellen. Für richtig großen Problemen ist natürlich solch ein Forum wie hier, wo auch dir richtigen Wissensträger antworten, der bessere Anlaufpunkt.
Um wirklich anspruchsvolle Aufgaben zu erstellen fehlt mir in den meisten Programmiersprachen einfach die Erfahrung, die ich wohl auch nie richtig erreichen werde, da ich in meinem Beruf kein Programmier bin. Aber dennoch hin und wieder programmieren muss.
Aber vielleicht finden sich ja noch richtige Profils die dann die Aufgaben und Lösungen in speziellen Bereichen genauer betrachten und vor der Freischaltung bewerten können.Ich kann versprechen, dass die Seite weiter ausgebaut wird und sie wohl auch nicht so schnell offline geht.
Das mit dem Punktesystem ist wohl auch noch nciht so ausgereift, da gebe ich euch natürlich recht. 100 Punkte gibt es eben für jede neue Aufgabe (um einen Anreiz zu schaffen, damit auch viele Aufgaben eingereicht werden), für jede die erste Lösung 60 Punkte, für die 2. 40 usw. Im Moment kann jede Lösung mit einem Daumenhoch bewertet werden, für jeden Daumenhoch bekommt der Ersteller der Lösung dann auch Punkte. Aber das System muss ich noch einmal überdenken.
Für alle die sich dort angemeldet haben und Fehler, Bugs, Anregungen haben könnt ihr im kleinen Feedback-Forum schreiben, würde mich freuen.@cmaper: Im Moment können noch mehrere Lösungen eingereicht werden, aber das wird sich auch noch ändern. Im Moment kann man seine Lösungen noch nicht nachträglich bearbeiten.
@Eine Frage der Umsetzung: Javascript aktiviert ist die syntax highlighting sichtbar.
Thema Übersicht, diese ist noch nicht entwickelt. Deine Tipps werde ich aber dann berücksichtigen.Fazit: Es wird schon jetzt hier und da viel Blödsinn and Aufgaben bzw. Lösungen eingereicht, welche ich auch einfach ohne Kommentar lösche. Das wird sich aber mit der Übersicht auch ändern. Zudem soll es auch zu jeder Aufgabenbeschreibung eine Kommentarfunktion geben... und und und
Viel vor und wenig Zeit selbst Lösungen zu schreiben. Was eigentlich das Ziel von mir war. Selbst etwas zu lernen...Danke fürs Feedback.
Gruß Gustl
-
Gustl schrieb:
@Eine Frage der Umsetzung: Javascript aktiviert ist die syntax highlighting sichtbar.
Also so statisches Zeugs wie Syntax Highlighting kriegst du doch sicher auch ohne Javascript hin.
Bei mir ist JS aus Sicherheitsgründen deaktiviert.Thema Übersicht, diese ist noch nicht entwickelt. Deine Tipps werde ich aber dann berücksichtigen.
Danke.
-
So, Lösung eingereicht.
Möchte jemand noch hier sehen?
Aber erst, nachdem mir die Punkte verliehen worden sind
Hehe, nice! Jetzt schon 830 Punkte!

Damit stehe ich auf Platz 6. Bald bin ich 2. >:D
-
Sone schrieb:
So, Lösung eingereicht.
Möchte jemand noch hier sehen?Zeigt mal filter. Der Rest ist nicht so interessant.
-
camper schrieb:
Sone schrieb:
So, Lösung eingereicht.
Möchte jemand noch hier sehen?Zeigt mal filter. Der Rest ist nicht so interessant.
Ja, tatsächlich hatte ich bei filter einige Schwierigkeiten.
template<typename TL, typename TL2> struct merge {}; template<typename ... args, typename ... args2> struct merge< type_list<args...>, type_list<args2...> > { typedef type_list<args ..., args2 ...> merged_list; }; template<template <typename> class Pred, typename TL> struct filter_impl {}; template<template <typename> class Pred, typename first, typename ...args> struct filter_impl<Pred, type_list<first, args...>> { typedef typename std::conditional< Pred<first>::value, typename merge< type_list<first>, typename filter_impl< Pred, type_list<args...> >::filtered_list>::merged_list, typename filter_impl< Pred, type_list<args...> >::filtered_list>::type filtered_list; }; template<template <typename> class Pred> struct filter_impl<Pred, type_list<>> { typedef type_list<> filtered_list; }; template <typename TL, template <typename> class Pred=identity> using filter = typename filter_impl<Pred, TL>::filtered_list;Aber wahrscheinlich ist mein Code völliger Blödsinn, voller Mankos und Bugs :xmas2:
Edit: Stop! Jetzt klaut es bestimmt jeder (außer camper, weil der sowieso eine bessere Lösung hat)

-
Sag, camper, hast du dich eigentlich dort angemeldet? Wahrscheinlich nicht, oder?

-
Ganz nett Sone, entspricht ziemlich genau meiner Implementierung.
template <typename T> struct identity_ { using type = T; }; template <typename T, typename TL> struct cons_ {}; template <typename T, typename... Ts> struct cons_<T, type_list<Ts...> > : identity_<type_list<T, Ts...> > {}; template <typename T, template <typename> class Pred=identity> struct filter_ {}; template <typename T, typename ... Ts, template <typename> class Pred> struct filter_<type_list<T, Ts...>, Pred> { using Rest = typename filter_<type_list<Ts...>, Pred>::type; using type = typename std::conditional<Pred<T>::value, typename cons_<T, Rest>::type, Rest>::type; }; template <template <typename> class Pred> struct filter_<type_list<>, Pred> : identity_<type_list<> > {};
-
Hehe, auf Basis dieser Grundalgorithmen gabs jetzt eine ganz fiese Aufgabe ^^
-
templer schrieb:
Hehe, auf Basis dieser Grundalgorithmen gabs jetzt eine ganz fiese Aufgabe ^^
Wo? :hechel:
-
Gut, bis Gustl die Aufgabe freigeschaltet hat, hier die Kurzform:
template <typename... Ts> struct all_equal; template <typename T, typename... Ts> struct all_equal<T, Ts...> { static constexpr bool value = tmpalg::all_of<tmpalg::type_list<Ts...>, ???>::value; }; template <> struct all_equal<> : std::true_type {}; static_assert(all_equal<int, int, int, int>::value, ""); static_assert(!all_equal<float, int, int, int>::value, ""); static_assert(!all_equal<int, int, short, int>::value, ""); static_assert(all_equal<>::value, "");Ersetzte die ??? mit dem passenden Ausdruck. Es dürfen maximal 3 zusätzliche Zeilen gebraucht werden.
-
Btw: Es reichen 73 Zeichen für alles inkl ????
So schwierig ist das doch nicht.
-
Habe meine Lösung nochmal etwas überarbeitet:
template <typename T> struct identity_ { using type = T; }; template <typename T> using identity = T; template <typename... T> struct type_list : identity_<type_list<T...>> {}; template <typename... TL> struct concat_type_lists_; template <typename... TL> using concat_type_lists = typename concat_type_lists_<TL...>::type; template <typename... T, typename... U, typename... TL> struct concat_type_lists_<type_list<T...>, type_list<U...>, TL...> : concat_type_lists<type_list<T..., U...>, TL...> {}; template <typename... T> struct concat_type_lists_<type_list<T...>> : type_list<T...> {}; template <typename TL, template <typename> class Pred> struct filter_; template <typename TL, template <typename> class Pred> using filter = typename filter_<TL, Pred>::type; template <typename... T, template <typename> class Pred> struct filter_<type_list<T...>, Pred> : concat_type_lists<typename std::conditional<Pred<T>::value, type_list<T>, type_list<>>::type...> {};Eigentlich wollte ich ohne eine merge/cons/concat-Funktion auskommen. Das muss ich aber erst nochmal überschlafen.
-
templer schrieb:
Btw: Es reichen 73 Zeichen für alles inkl ????
So schwierig ist das doch nicht.Das ist es auch überhaupt nicht. Habe meine Lösung gleich fertig.
Eigentlich wollte ich ohne eine merge/cons/concat-Funktion auskommen. Das muss ich aber erst nochmal überschlafen.
Genau das dachte ich auch.

-
Btw: Wieso kann man nicht ein verschachteltes Klassentemplate as ganz normales Klassentemplate benutzen? camper, hilf!
Edit: Ach, doch es geht. Man muss nur::templateschreiben ^^So, bin fertig!
Willste sehen?