• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

ngb.to Coders auf "Codewars"

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
Hallo,

ich bin seit kurzer Zeit auf der Plattform "Codewars" eingetragen. Dort kann man Programmiersprachen lernen bzw. bekommt Aufgaben (Katas) die es in einer Sprache bzw. mehreren (nach Wahl) zu lösen gilt.

Ich würde euch gerne dazu einladen zu joinen und gemeinsam Aufgaben, in verschiedenen Sprachen, zu meistern, zu lösen und zu diskutieren. Und einen "ngb.to Coder" Clan zu gründen. Wenn die Mods/Team damit okay sind.

Die ganze Seite hat ein sehr gutes Konzept und es macht ziemlich viel Spaß die Aufgaben zu lösen.
Dabei geht es nicht wie bei CodeGolf darum, den Code zu minimalisieren, sondern darum, brauchbare Lösungen zu produzieren mit den Werkzeugen der Programmiersprachen.

Ich würde gerne einen "Clan" gründen. Damit wir voneinander lernen können und uns finden.

Das ganze ist natürlich erst mal inoffiziell, aber ich denke es wird euch Spaß machen.

Hier der Link mit dem wir uns verknüpfen könnten (über mein Profil):
www.codewars.com/r/Y5GnJA

Der direkte Link zur Seite (ohne Referrer Link zu meinem Account, der uns aber nicht verknüpft):
www.codewars.com

Ohne Referer finden wir uns aber nicht so einfach glaube ich, daher wäre es besser ihr nutzen den Referal Link, das gibt kein Geld, nur "Honor" für mich, weil ihr über meinen Link gejoint habt. :)

Aktuell mache ich C++ und Javascript Aufgaben (Katas), aber auch andere Sprachen sind wählbar, wie C, Java, Ruby, Go, Python und vielen mehr.

@Moderation:
Falls das NGB @ Team damit einverstanden ist, würde ich gerne die Gruppe "ngb.to Coders" damit einführen.

Es wäre auch interessant Aufgaben die spannend sind oder einfach diverse Optionen bzw. Lösungswege haben, hier zu besprechen. In diesem Sinne wäre es sicherlich nett und spannend und bringt frischen Wind herein! ;)
 
Zuletzt bearbeitet:

BurnerR

Bot #0384479

Registriert
20 Juli 2013
Beiträge
5.252
bin dabei.

--- [2018-12-03 10:35 CET] Automatisch zusammengeführter Beitrag ---

Nice!
Habe jetzt drei Katas gemacht:
Einmal was gelernt wie es eleganter geht.
Einmal eine bessere Lösung eingereicht als die bereits vorhandenen.
Einmal 1:1 die bestbewerteste Lösung eingereicht.

Es wird :-D
 

Brother John

(schein)heilig
Teammitglied

Registriert
1 Aug. 2013
Beiträge
235
Hab mich auch angemeldet und – verdammt! Das hat doch ein gewisses Suchtpotenzial. :D
 

BurnerR

Bot #0384479

Registriert
20 Juli 2013
Beiträge
5.252
Hab gestern noch nen update auf 6 Kyu bekommen. Und kriege daher auch 5 Kyu Aufgaben.
Das waren jeweils ganz schöne Sprünge, die 7er waren noch eher trivial, die 6er mit bisschen nachdenken und die 5er sind echte Arbeit :-D.

Gerade noch gelernt, dass es inhaltliche Serien gibt mit steigendem Schwierigkeitsgrad:
 
Zuletzt bearbeitet:

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
  • Thread Starter Thread Starter
  • #8
Holla, super Resonanz bisher, das freut mich und ich hoffe wir werden uns ein paar Probleme herauspicken und hier einfach mal aufgreifen.

Ein kleiner Hinweis bezüglich der Gruppe, wenn ihr dem "ngb.to Coder" Clan beitreten wollt und automatisch einander followen möchtet; hab keinen Spam dadurch bekommen, man sieht nur die Staffelung wer welchen Rank hat und andere Details wie Katas (ohne Lösungen) - könnt ihr "ngb.to Coders" als "Clan/Organisation" in eurem Profil eintragen. Damit werdet ihr automatisch mit allen anderen "verknüpft".

Es ist auch genau so einzugeben "ngb.to Coders" ohne die Anführungszeichen.

Und noch ein kleiner Tip zu den Katas, falls ihr es noch nicht herausgefunden habt: Man kann mit [kw]Strg + S[/kw] schnell Code abschicken und prüfen lassen.

Ich muss sagen, ich bookmarke mir fleißig Katas bei denen ich neue Sprachelemente verwendet habe (C11, C14) oder die ich an sich interessant fand.
Ich würde das zu einem späteren Zeitpunkt gerne mal mit ein zwei Aufgaben hier "semi-öffentlich" machen und diskutieren.

Es gibt übrigens auch "leichte" Übungen, bei denen ich angefangen hatte und gescheitert bin, weil ich mir sicher war das es gehen muß, aber nicht mit welchen Sprachfeatures.

Zum Beispiel eine Übung, einen "Tannenbaum" zu basteln. Ihr kennt diese Übung sicher. Jedenfalls, ich bin daran bisher gescheitert, weil ich nicht musste wie ich die passenden Strings in C++ generieren lassen sollte... :D

Das ist übrigens auch sehr gut anzumerken, Katas die ihr "trainiert" aber nicht komplett gelöst habt, tauchen auch im Profil auf, so kann man später auch auf diese zurückkommen.
Nur, ich würde mir nicht die Chance nehmen lassen und Katas "skippen"/überspringen, ist gerade interessant das man es später auch jederzeit neu angehen kann.
 

BurnerR

Bot #0384479

Registriert
20 Juli 2013
Beiträge
5.252
Habe auch schon überlegt. Würde einerseits gerne meine Ruby-Lösungen hier einbringen, weil vieles mit Ruby/funktionaler Programmierung schon extrem geil lösbar ist.
Andererseits sollte man Lösungen ja nicht veröffentlichen. Wobei es für diese niedriglevel-Dinger letztendlich vermutlich nicht so super-blöd ist, weil die auf irgendeine Art vermutlich fast jeder lösen kann mit etwas google.

--- [2018-12-04 20:23 CET] Automatisch zusammengeführter Beitrag ---

Eine Aufgabe war, die Reihenfolge von Bytes gegeben als Bits (also 8er-Blöcke) umzudrehen.
Also aus z.B. 11111111 10101010 wird 10101010 11111111
Das geht recht hübsch mit dem "each_slice(n)" Enumerator, der sich jeweils acht Elemente rauspickt.
[src=ruby]def data_reverse(data)
data.each_slice(8).to_a.reverse.flatten
end[/src]

Sehr hübsch auch wie man die 'digitale Wurzel' einer Zahl herausfindet.
Dazu bildet man solange die quersumme (also die summe der einzelnen ziffern) bis das Ergebnis unter 10 liegt:
485 -> 17 -> 8
Ist ein hübscher Einzeiler mit Rekursion:
[src=ruby]def digital_root(n)
n > 10 ? digital_root(n.digits.sum) : n
end[/src]
 
Zuletzt bearbeitet:

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
  • Thread Starter Thread Starter
  • #10
Ich haue mal eine Serie rein, die mir bisher sehr viel Spaß gemacht hat:


Es gab da noch ein anderes Kata, auch ganz nett, weil hier etwas mehr Gebrauch von Klassen gemacht wurde, fand ich als Übung in C++ gut.


Ansonsten, ich schreibe selten die perfekten Lösungen, zum Großteil verwende ich mehr Code als "bestmöglich" für die Lösung...
Aber ich hab mir schon ein paar Tricks abschauen können und das [kw]#include <algorithm</kw> ein Freund ist, es ist aber selten schwer das ohne Übung korrekt anzuwenden. :)

Was mich nur am meisten stresst sind Katas bei denen Berechnungen zu Grunde liegen, den Mathematischen Teil verhaue ich immer, da fehlt mir die Übung.
Daher sind mir wohl auch just gerade die oben beiden Katas positiv in Erinnerung.

Lösungen für einige der Katas aus der Serie und Two Fighters kann ich bei Bedarf auch reinstellen, falls gewünscht.
 

KaPiTN

Boomer ♪♪♫♪♫♫♪

Registriert
14 Juli 2013
Beiträge
25.713
Reicht da eine Wegwerfadresse oder braucht man die noch einmal?
 

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
  • Thread Starter Thread Starter
  • #12
Freischalten mußt du dich, also du bekommst eine Registrierungsemail. Ob man eine "Wegwerf" Adresse, nehmen muß wegen Spam, nein. Ich habe bisher keine Email von der Seite bekommen mit Werbung oder ähnlichem. Auch nicht darüber das andere Katas gelöst haben oder ähnlichem. Daher würde ich eine "normale" Adresse stark empfehlen. Außerdem, man kann einstellen wie häufig man Emails (ich weiß nur noch nicht für was genau) bekommen will.
 

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
Mit Ruby kann C++ wohl kaum mithalten was "kompakten Code" angeht.

Die Schwierigkeit variert schon ziemlich. Auch bei einfacheren Aufgaben brauche ich manchmal eine Ewigkeit um erstmal zu verstehen was ich machen muss.

Mit den mathematischen Problemen komme ich auch nicht so gut zurecht. Gerade hatte ich die hier:
Die Implementierung ist mehr oder weniger trivial, wenn man mal rausgefunden hat wie man das berechnet.
(aber das Internet kennt ja auf fast jede Frage eine Antwort :D)
 

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
  • Thread Starter Thread Starter
  • #14
@exomo: Interessantes Kata, werde ich wohl auch mal trainieren. Aber Körperberechnung.... lang ists her :o - wird Zeit das mal aufzufrischen :)
 

Brother John

(schein)heilig
Teammitglied

Registriert
1 Aug. 2013
Beiträge
235
Die Matheaufgaben überspringe ich immer. Dafür reicht die Lust nicht aus. Davon abgesehen sind ja eigentlich alles reine Algorithmenaufgaben. Deswegen mag ich die Seite, weil ich solche Probleme sonst recht selten sehe.

Manchmal lohnt es sich auch, sich selbst zusätzliche Bedingungen zu stellen. Ich bastel z.B. gerade am . Eine funktionierende Lösung ist nicht besonders spannend. Kann man ziemlich spontan runterschreiben. Also habe ich mir auferlegt, ich will nicht in der einen oder anderen Form Ziffern zählen, sondern möglichst große zusammenhängende Speicherblöcke vergleichen. Und auf einmal wird da ein richtig interessantes Problem draus. :)
 

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
  • Thread Starter Thread Starter
  • #16
Wie kann man deinen Lösungsweg verstehen, kontrollierst du die Summen der Spielfelder also 3x3 Paare oder der gesamten Reihe(/n) das alle Zahlen einmal enthalten sind in selbiger(/n)?

Also mit zwei Lösungsprüfungen? Zuerst die Reihe, dann das jeweilige Spielfeld?
 

Brother John

(schein)heilig
Teammitglied

Registriert
1 Aug. 2013
Beiträge
235
Verdammt! Du hast mit einem Wort gerade meinen ganzen schönen Ansatz gekillt. Zumindest für diese Aufgabenstellung macht das so echt keinen Sinn mehr.

Die Summen waren es. Die habe ich ganz am Anfang zu schnell als nicht ausreichend abgehakt. Aber für ein simples »gültig ja/nein« reichts: Zeilen, Spalten, 9er-Quadrate jeweils einzeln summieren, dazu die Gesamtsumme. Dann sind keine Schlupflöcher mehr offen.

Meine Idee war: aus Zeilen, Spalten, Quadraten jeweils Arrays aus den neun Ziffern machen, sortieren, gegen die erwartete Sequenz vergleichen. Da die Summen doch klappen, ist das zu komplex. Wenn die Fragestellung wäre: »Wo sind die Fehler im Spielfeld?«, könnte das wieder anders aussehen …

Interessant fand ichs deswegen: Die Aufgabe reicht das Spielfeld als Array von Zeilen rein. Für die Spaltenchecks brauche ich aber ein Array von Spalten. Und das ist genau das Problem, das High-Performance-Computing ständig hat (meistens höre ichs aus der Spieleentwickler-Ecke): Will ich für die Verarbeitung Arrays-of-struct oder Struct-of-Arrays. Je nach Algorithmus ist das eine oder andere so deutlich besser, dass vorher transformieren die billigste Lösung ist. Das ist exakt die Sudoku-Situation, wo ich zusammenhängende Spalten brauche, aber Zeilen habe. Und die Frage ist dann: wie sieht ein effizienter Algorithmus für die Transformation aus?

Btw: Die allererste C++-Runterschreib-Spontanidee war: Mach pro Zeile, Spalte, Quadrat jeweils ein std::set auf,
zuerst Nullen abfangen, dann Ziffer per set::insert() reinschieben – am Rückgabewert erkennt man Duplikate. Fertig. Ist nicht besonders effizient, aber hey, wie viele Sudokus wird man pro Millisekunde schon checken wollen. ;)
 

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
  • Thread Starter Thread Starter
  • #18
Den Spaß wollte ich dir nun nicht nehmen :o

War nur eine Idee, ...

...weil man bei Sudoku ja unterm Strich Reihen wie auch einzelne Spalten prüfen kann um die Spielfeldlücken zu finden :D
Ich hab mal ein paar Tage Sudoku intensiver gespielt.
 

Brother John

(schein)heilig
Teammitglied

Registriert
1 Aug. 2013
Beiträge
235
Ich habe eben meine Sudoku-Lösung abgeschickt, war gespannt auf die anderen Lösungen und dann echt ein bisschen frustriert, wie brutal die meisten golfen. Wenn man in einer Funktion vier klassische for-Schleifen hat und als Schleifenvariablen i, j, k und l nimmt, das muss man doch merken, dass das vollständig unleserlich ist! Ab und zu mal ne Leerzeile wär auch nicht verkehrt …

Aber Spaß am Bauen hatte ich trotzdem, also @theSplit keine Panik. ;)
 

theSplit

1998
Teammitglied

Registriert
3 Aug. 2014
Beiträge
27.074
  • Thread Starter Thread Starter
  • #20
CodeGolfing ist zum lernen, nun ja, nicht unbedingt erstrebenswert... würde ich meinen. Zwar schön das man eine Lösung in < 10 Zeilen erschlagen kann aber ich glaube dafür gibt es auch die Kategorisierung zwischen "Best practice" und oder "Clever" bei den Kata-Antwortenfilter(n) - dass als Hinweis.

Schließlich, wer wühlt sich durch einen Einzeiler, den man nicht so einfach "erweitern" kann bzw. bei Problemen im Output mit anderen Testdaten komplett aufdröseln 'muß' um das was für den Fall "Clever" ist, zu einem für andere und sich selbst "funktionalen" Code Block 'um zu giesen' oder in Funktionen oder Klassen zu unterteilen ;)
 
Oben