Scripting Contest
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Stopp mal, jetzt funktionirt das aber nicht mehr!
In jeder Zeile fehlt das 1. Zeichen.
In jeder Zeile fehlt das 1. Zeichen.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Re: Scripting Contest
Ist schon korrigiert. Die Bash fängt bei 0 an zu zählen.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Wir könnten ja was mit regexen machen
Hatte heute die schöne Aufgabe diese Check_MK-Datei(Python-Syntax als Konfigurationsdatei) zu parsen:
Mein aus einzelnen, kleineren Einzelelementen als Variabeln zusammengesetzter Regex sieht dann so aus.
Das Debugging war sehr hässlich. Zwischendrin hatte ich es dann geschafft eine Regex-Endlos-Backtracking-Schleife zu bauen. Hmm. Eigentlich unwartbar...
Hatte heute die schöne Aufgabe diese Check_MK-Datei(Python-Syntax als Konfigurationsdatei) zu parsen:
Code: Alles auswählen
wato_host_tags += \
[('agent',
u'/Agent type',
[('cmk-agent', u'Check_MK Agent (Server)', ['tcp']),
('snmp-only', u'SNMP (Networking device, Appliance)', ['snmp']),
('snmp-v1', u'Legacy SNMP device (using V1)', ['snmp']),
('snmp-tcp', u'Dual: Check_MK Agent + SNMP', ['snmp', 'tcp']),
('ping', u'Only PING this device', [])]),
('criticality',
u'Criticality',
[('Normal', u'Normales System mit geringer Wichtigkeit', []),
('Kritisch', u'Wichtiger Server(prio 3)', []),
('Kritisch2', u'Wichtiger Server(prio 2)', []),
('Kritisch1', u'Wichtiger Server(prio 1)', []),
('RZ-Kritisch', u'Essentiell fuer alle RZ-Dienste', []),
('Test', u'Testsystem', []),
('Offline', u'Do not monitor this host', [])]),
('networking',
u'Networking Segment',
[('lan', u'Local network (low latency)', []),
('wan', u'WAN (high latency)', []),
('dmz', u'DMZ (low latency, secure access)', [])]),
('WEBSERVER',
u'Webserver',
[('NOWEBSERVER', u'Kein Webserver', []),
('HTTP', u'http:// only', []),
('HTTPS', u'https:// only', []),
('HTTPSHTTP', u'http:// + https://', [])]),
('SMTPSERVER',
u'SMTP-Server',
[('NOSMTPSERVER', u'Kein SMTP-Server', []),
('SMTPSERVER', u'SMTP-Server', [])]),
('IMAPSERVER',
u'IMAP-Server',
[('NOIMAPSERVER', u'Kein IMAP-Server', []),
('IMAPSERVER', u'IMAP-Server', [])]),
('POP3SERVER',
u'POP3-Server',
[('NOPOP3SERVER', u'Kein POP3-Server', []),
('POP3SERVER', u'POP3-Server', [])]),
('SLA',
u'Service Level Agreement',
[('NOSERVICE', u'Kein Service', []),
('SERVICE_5x9',
u'W\xe4hrend der normaler Gesch\xe4ftszeit Mo-Fr 9-18 Uhr',
[]),
('SERVICE_7x16', u'Erweiterte Gesch\xe4ftszeit Mo-So 6-22 Uhr', []),
('SERVICE_24x7', u'Rund um die Uhr', []),
('SERVICE_APP', u'Server- und Anwendungsbetreuung', [])]),
('NAMESERVER',
u'DNS-Server',
[('NODNS', u'Kein Nameserver', []), ('DNSSERVER', u'Nameserver', [])]),
('SSHSERVERTAG',
u'SSH-Server',
[('NOSSHSERVER', u'Kein SSH-Server', []), ('SSHSERVER', u'SSH-Server', [])]),
('SECUREPOINT',
u'Secure Point FW',
[('NOSP', u'Keine Securepoint', []),
('ISSP', u'Secure Point Firewall', [])]),
('APTACTIVE',
u'APT-Checks einschalten',
[('APTOFF', u'APT Checks aus', []), ('APTON', u'APT Checks ein', [])]),
('DELAYED_CRITICAL',
u'Erst verzoegert kritisch',
[('DEFAULT', u'Keine Verzoegerung', []),
('DELAYED', u'Mit 15 Min verzoegert kritisch setzen', []),
('HUGEDELAYED', u'Mit 30 Min verzoegert kritisch setzen', [])]),
('SSL_SMTP',
u'SSL f\xfcr SMTP',
[('SMTP_NOSSL', u'Kein SSL', []),
('SMTP_SSL_DIRECT', u'SSL direkt(465)', []),
('SMTP_SSL_ALL', u'SSL direkt und starttls(25,587,465)', [])]),
('SSL_POP3',
u'SSL f\xfcr POP3',
[('POP3_NOSSL', u'Kein SSL', []),
('POP3_SSLDIRECT', u'SSL direkt (995)', []),
('POP3_ALL_SSL_ALL', u'SSL direkt(995) und starttls(110)', [])]),
('SSL_IMAP',
u'SSL f\xfcr IMAP',
[('IMAP_NOSSL', u'Kein SSL', []),
('IMAP_SSL_DIRECT', u'SSL direkt(993)', []),
('IMAP_SSL_ALL', u'SSL direkt(993) + startssl(143)', [])]),
('FTPSERVICE',
u'FTP',
[('FTP_OFF', u'Kein FTP', []),
('FTP_ON', u'FTP', [])])]
wato_aux_tags += \
[('snmp', u'monitor via SNMP'), ('tcp', u'monitor via Check_MK Agent')]
Mein aus einzelnen, kleineren Einzelelementen als Variabeln zusammengesetzter Regex sieht dann so aus.
Code: Alles auswählen
wato_host_tags \+=[\n\s\\]{3}\[(((\('([^']{1,40})',?\s{0,10}u'([^']{1,200})',?\s{0,15}\[((\s{0,15}\('([^']{1,40})',?\s{0,10}u'([^']{1,200})',?\s{0,10}\[((('([^']{1,40})'),? ?){0,15})\]\),?\s{0,10})+)\]\))[,\s]{0,9}){0,40})
Re: Scripting Contest
Warum nimmst dann dann nicht einfach python um das zu parsen?
Unix is user-friendly; it's just picky about who its friends are.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Das Gute liegt näher als man denkt....Warum nimmst dann dann nicht einfach python um das zu parsen?
Re: Scripting Contest
Hi
Ihr seid alle Gewinner
Wer möchte eine neue Aufgabe eröffnen
Ciao
Ihr seid alle Gewinner
Wer möchte eine neue Aufgabe eröffnen
Ciao
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Ich hätte gern was mit Vektorberechnung, alleine weil ich die Formel dazu mal in Code gegossen sehen will.
Mir hat man das mal gezeigt, aber das schon etwas her... Heute würde ich das glaube nicht so einfach wieder zusammen bekommen.
Btw: Das ist die Art von Formel/Berechung, womit in Ego-Shootern geschaut wird ob man getroffen hat.
Mir hat man das mal gezeigt, aber das schon etwas her... Heute würde ich das glaube nicht so einfach wieder zusammen bekommen.
Btw: Das ist die Art von Formel/Berechung, womit in Ego-Shootern geschaut wird ob man getroffen hat.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Re: Scripting Contest
Bin durch Umwege auf den Scripting Contest aufmerksam gemacht worden.
Hätte eine intelligentes "Leeren" des Papierkorbs im Sinn. Hatte hierzu schon mal einen Thread, wo die Idee verrissen wurde. Sicher ist das Konzept un-debianisch bzw. un-unixoid. Aber es gibt genug DAUs und Ex-Windowser die einen Sinn darin sehen.
Es steht auf meiner ToDo-Liste, bisher fehlt mir aber die Zeit. Ich melde mich ggf. wenn ich hier was anfange, falls nicht schon vorher einer was lostritt.
Hätte eine intelligentes "Leeren" des Papierkorbs im Sinn. Hatte hierzu schon mal einen Thread, wo die Idee verrissen wurde. Sicher ist das Konzept un-debianisch bzw. un-unixoid. Aber es gibt genug DAUs und Ex-Windowser die einen Sinn darin sehen.
Es steht auf meiner ToDo-Liste, bisher fehlt mir aber die Zeit. Ich melde mich ggf. wenn ich hier was anfange, falls nicht schon vorher einer was lostritt.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Hi MoonKid,
danke für den Tip auf Dein Papierkorb-Thema. Find' Ich persönlich interessant. Ich antworte dann mal dort darauf.
Für eine Aufgabe des Scripting-Contests halte ich das nicht unbeding für geeignet. Das Thema Papierkorb hängt da
u. a. zusammen mit den grafischen Oberflächen. D. h. das kann schnell ausufern. Wenn Du Dir mal Gedanken machst
und eine präzise und klare Aufgabenstellung formulierst, die vom Aufwand her überschaubar ist, dann
wäre das eine Möglichkeit.
Grüße,
h.
danke für den Tip auf Dein Papierkorb-Thema. Find' Ich persönlich interessant. Ich antworte dann mal dort darauf.
Für eine Aufgabe des Scripting-Contests halte ich das nicht unbeding für geeignet. Das Thema Papierkorb hängt da
u. a. zusammen mit den grafischen Oberflächen. D. h. das kann schnell ausufern. Wenn Du Dir mal Gedanken machst
und eine präzise und klare Aufgabenstellung formulierst, die vom Aufwand her überschaubar ist, dann
wäre das eine Möglichkeit.
Grüße,
h.
Re: Scripting Contest
Ich sehe da keine Verbindung mit den grafischen Oberflächen. Die bleiben Außen vor. Kurz: Das Script wird per (ana)cron regelmäßig aufgerufen und überprüft den Papierkorb nach den gegenbenen Parametern und räumt ggf. auf.heisenberg hat geschrieben:Für eine Aufgabe des Scripting-Contests halte ich das nicht unbeding für geeignet. Das Thema Papierkorb hängt da
u. a. zusammen mit den grafischen Oberflächen. D. h. das kann schnell ausufern. Wenn Du Dir mal Gedanken machst
und eine präzise und klare Aufgabenstellung formulierst, die vom Aufwand her überschaubar ist, dann
wäre das eine Möglichkeit.
Re: Scripting Contest
Hab die Diskussion ueber das Loeschscript in den dazu passenden Thread geschoben. Ab hier: viewtopic.php?f=28&t=158026&start=30#p1067688
Use ed once in a while!
Re: Scripting Contest
Gibt es wieder/noch eine offene Aufgabenstellung?
Würde sonst mal "Türme von Hanoi" oder implementierung eines Dezimal -> Binär Umrechners nur über Rechenoperationen (also keine "toBinary" funktionen o.ä.) in den Raum werfen...
Hab mich beidem vor kurzem in mehreren Sprachen angenommen und war doch erstaunt wie elegant oder häßlich das je nach Sprache und Lösungsweg sein kann.
Würde sonst mal "Türme von Hanoi" oder implementierung eines Dezimal -> Binär Umrechners nur über Rechenoperationen (also keine "toBinary" funktionen o.ä.) in den Raum werfen...
Hab mich beidem vor kurzem in mehreren Sprachen angenommen und war doch erstaunt wie elegant oder häßlich das je nach Sprache und Lösungsweg sein kann.
Re: Scripting Contest
Hi
Das Forum wartet bestimmt schon auf eine neue Aufgabenstellung also leg los ...
Ciao
Das Forum wartet bestimmt schon auf eine neue Aufgabenstellung also leg los ...
Ciao
Re: Scripting Contest
Na dann würde ich fürn Anfang mal den Dezimal/Binär-Umwandler vorschlagen.
Gesucht ist also ein Programm/Script, das eine beliebige natürliche Zahl in Binärform darstellt.
Für die eigentliche Umwandlung/"Umrechnung" dürfen keine fertigen Funktionen der Sprache oder einer Bibliothek/Paket/Modul... benutzt werden - Ansonsten darf man sich sämtlichen Arithmetischen- oder Bitoperationen bedienen oder gerne auch ganz andere Wege gehen. Es gibt viele - auch ziemlich absurde - Varianten für diese Umwandlung. Bin gespannt was so alles kommt.
Punkte gibts für Eleganz und/oder Einfallsreichtum
Gesucht ist also ein Programm/Script, das eine beliebige natürliche Zahl in Binärform darstellt.
Für die eigentliche Umwandlung/"Umrechnung" dürfen keine fertigen Funktionen der Sprache oder einer Bibliothek/Paket/Modul... benutzt werden - Ansonsten darf man sich sämtlichen Arithmetischen- oder Bitoperationen bedienen oder gerne auch ganz andere Wege gehen. Es gibt viele - auch ziemlich absurde - Varianten für diese Umwandlung. Bin gespannt was so alles kommt.
Punkte gibts für Eleganz und/oder Einfallsreichtum
Re: Scripting Contest
Wunderbar! Dann mal los!r4pt0r hat geschrieben:Na dann würde ich fürn Anfang mal den Dezimal/Binär-Umwandler vorschlagen.
Wir machen es wieder so, dass es eine stille Bearbeitungszeit gibt, waehrend der keine Loesungen gepostet werden sollen, man darf lediglich mitteilen, dass man eine Loesung entwickelt hat und in welcher Sprache oder in welchen Charakter die hat, um die anderen Teilnehmer und die Noch-nicht-Teilnehmer anzustacheln. Anschliessend sollen die Loesungen eingereicht und gerne diskutiert werden.
Eine Bearbeitungsphase bis Sonntag abend scheint mit etwas zu knapp zu sein, da manche ueber das Wochenende vielleicht offline sind. Ich koennte mir Mittwoch abend (5 Tage Zeit) oder Freitag abend (7 Tage Zeit) vorstellen. Was meint ihr?
Na, sagen wir lieber mal: Eine natuerliche Zahl kleiner 2^15. (Das erlaubt naemlich auch Implementierungen mit 16-bit signed int ... fuer die Kleinlichen.)Gesucht ist also ein Programm/Script, das eine beliebige natürliche Zahl in Binärform darstellt.
Was gefaellt, ist gut!Punkte gibts für Eleganz und/oder Einfallsreichtum
Ebenso wird jede Einreichung begruesst, bei der ihr Autor oder ein Mitleser etwas lernt!
Los geht's!
Use ed once in a while!
Re: Scripting Contest
Wer das ganze auf nem 8bit AVR lösen will darf natürlich auch auf kleinere Zahlen gehenMeillo hat geschrieben:Na, sagen wir lieber mal: Eine natuerliche Zahl kleiner 2^15. (Das erlaubt naemlich auch Implementierungen mit 16-bit signed int ... fuer die Kleinlichen.)Gesucht ist also ein Programm/Script, das eine beliebige natürliche Zahl in Binärform darstellt.
Also einfach: signed int der verwendeten Architektur.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Zu einer Aufgabe wäre noch gut auch ein Abgabezeit zu haben.
Also:
Ich habe es mal mit Haskell versucht. Das habe ich leider nicht hinbekommen. Deswegen habe ich's dann nochmal mit PHP funktional+rekursiv umgesetzt.
So, jetzt noch mal etwas entzerrt:
Also:
- Klare Aufgabenbeschreibung
- Ggf. Testdaten
- Zeitpunkt der Auflösung/Veröffentlichung
Ich habe es mal mit Haskell versucht. Das habe ich leider nicht hinbekommen. Deswegen habe ich's dann nochmal mit PHP funktional+rekursiv umgesetzt.
Code: Alles auswählen
<?PHP
# Berechnung
function d2b($x) {return(($x<2)?"$x":d2b(floor($x/2)).($x%2));}
# Ausgabe
print((count($argv)>1)?d2b($argv[1]):"Kein Parameter angegeben!");
?>
Code: Alles auswählen
<?PHP
# Berechnung
function d2b($x) {
return (
($x<2)
?"$x" # dez 0 -> bin 0; dez 1 -> bin 1
: d2b(floor($x/2)) . ($x%2)); # Alles ws grösser ist: Modulo 2 ergibt die aktuelle
# Stelle, Rest wird nach vorne hin aufgefüllt
}
# Ausgabe der Binärzahl oder Fehlermeldung wenn kein Parameter angegeben wurde.
print((count($argv)>1)?d2b($argv[1]):"Kein Parameter angegeben!");
?>
Zuletzt geändert von heisenberg am 06.12.2015 22:22:32, insgesamt 3-mal geändert.
Re: Scripting Contest
Aufgabe:
Denkt euch folgendes Szenario: obiger Code ist Bestandteil eines Selektionsverfahrens in einer wissenschaftlichen Studie. Der Prozess muss daher für viele verschiedenen Leute (andere Wissenschaftler, Geldgeber, Nutzer, Reviewer) mit sehr unterschiedlichen IT-fachlichen Niveaus überprüfbar bleiben. Das bedeutet nicht, dass jeder dieser Menschen den Code lesen können muss. Aber er soll nicht in den Keller seiens Instituts steigen müssen, um einen Nerd/Admin (der wiederum keinen Bezug zur Studie und ihren Anforderungen hat) zu finden, der den Code versteht.
Mit Python3 ist das schnelle machbar.
Aber mein Gedanke ist eigentlich, dass es sowas doch schon geben muss.
Bisherige Lösungen, die ich finden konnte, zielen aber auf Word oder die Bash-Komponenten und bieten auf die Schnelle (Code-Verständnis!) keine Möglichkeit der Erweiterung (z.B. Punkt 2 oben).
- Häufigkeit aller vorkommenden Wörter in einem Text zählen
- auszuschließende Wörter festlegbar (z.B. 'und', 'and', 'for')
- absteigend sortiert darstellen
- für Menschen lesbarer und wartbarer und somit für mäßig technikaffiene Menschen überprüfbarer Code
- Effizienz ist hier definitiv kein Kriterium und ist Benutzbarkeit und Überprüfbarkeit untergeordnet
Denkt euch folgendes Szenario: obiger Code ist Bestandteil eines Selektionsverfahrens in einer wissenschaftlichen Studie. Der Prozess muss daher für viele verschiedenen Leute (andere Wissenschaftler, Geldgeber, Nutzer, Reviewer) mit sehr unterschiedlichen IT-fachlichen Niveaus überprüfbar bleiben. Das bedeutet nicht, dass jeder dieser Menschen den Code lesen können muss. Aber er soll nicht in den Keller seiens Instituts steigen müssen, um einen Nerd/Admin (der wiederum keinen Bezug zur Studie und ihren Anforderungen hat) zu finden, der den Code versteht.
Mit Python3 ist das schnelle machbar.
Aber mein Gedanke ist eigentlich, dass es sowas doch schon geben muss.
Bisherige Lösungen, die ich finden konnte, zielen aber auf Word oder die Bash-Komponenten und bieten auf die Schnelle (Code-Verständnis!) keine Möglichkeit der Erweiterung (z.B. Punkt 2 oben).
Zuletzt geändert von MoonKid am 07.12.2015 17:24:16, insgesamt 1-mal geändert.
Re: Scripting Contest
Naja, nicht direkt Shitstorm, aber: genannte Sachen sind nicht automatisch kryptisch, andere sind nicht automatisch DAU-lesbar. Und Effizienz kann durchaus auch ein positives Kriterium sein (wo Python dann naturgemäß verlieren würde). Nein, das scheint mir alles nicht recht durchdacht.Besonders letzter Punkt bedeutet, das RegEx, sed und ähnlich kryptische Lösungen nicht zählen. Ja ich bin hier im Debian-Forum und erwarte schon den shitstorm.
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Ich würde jetzt auch Mal sagen, dass vor allem Wissenschaftler sich üblicherweise zumindest ein Basislevel an Scripting aneignen, da wissenschaftliche Arbeiten vermehrt auch mit Testreihen und deren Auswertung also Zahlen und Statistiken zu tun haben. Dafür sind Scripting und Textanalysetools(Perl, sed, awk, Regex,....) sehr hilfreich.
Aber ich bin schon gespannt auf Deine Python3-Lösung und ob ich da als alter Kellernerd noch etwas lernen kann.
Aber ich bin schon gespannt auf Deine Python3-Lösung und ob ich da als alter Kellernerd noch etwas lernen kann.
Re: Scripting Contest
Mit sed/tr Wortweise zerlegen, sortieren und zählen mit uniq -c und rauswerfen was man nicht haben will mit
Gibt nen hübschen kleinen Einzeiler, ich seh beim besten Willen nicht, was daran unwartbar sein soll
(ausser Konkurenz gepostet, sonst hätt ich dafür ja extra bis zum Wochenende warten müssen )
Code: Alles auswählen
grep -v -w "and\|or\|for"
(ausser Konkurenz gepostet, sonst hätt ich dafür ja extra bis zum Wochenende warten müssen )
Re: Scripting Contest
Haben wir hier denn nun Regeln oder nicht?
Entweder wir spielen diesen Scripting-Contest nach einem gemeinsam vereinbarten Schema oder jeder macht was er will. Ich kann mit beidem leben, ich wuerde nur gerne wissen welcher Art wir vorgehen, damit ich mich nicht umsonst bemuehen muss.
Entweder wir spielen diesen Scripting-Contest nach einem gemeinsam vereinbarten Schema oder jeder macht was er will. Ich kann mit beidem leben, ich wuerde nur gerne wissen welcher Art wir vorgehen, damit ich mich nicht umsonst bemuehen muss.
Use ed once in a while!
Re: Scripting Contest
@Meilo: Die Frage ist doch viel eher ne ganz normale Frage fürs Forum als was für "hier". Wenn man sagt, "löst es für mich, aber benutzt blos nicht all die coolen Dinge" hat das doch nichts mehr mit dem eigentlichen Grund des Scriptingcontestes zu tun.
Re: Scripting Contest
Huch, gehts schon weiter? Ich dachte Mittwoch wäre die Deadline gewesen...
Hier noch meine beiden Lösungen - "leider" ebenfalls beide funktional/rekursiv, jeweils als komplettes ausführbares script.
Assembler erschien mir dann doch irgendwie sinnfrei - ins Register schieben und dann bitweise/binär wieder auslesen
Scala:
entzerrt:
Perl:
Ich muss dazu sagen, dass mir trotz identischem Algorithmus der Perl-code besser gefällt und IMHO lesbarer ist als Scala, das ja eigentlich so viel klarer sein soll... Klar lässt sich der Scala-Code noch weiter auf mehrere Zeilen entzerren - das Java-Typisch grausige, endlose aneinanderreihen von Funktionen mit Punkten bleibt trotzdem, ebenso wie die notwendigen Typumwandlungen (toInt, toString) die Perl automatisch erledigt...
Ist mir aber die letzten ~10 Tage seit ich mich mit Scala befasse öfter aufgefallen: Vieles was da als revolutionär, neu und "hip" verkauft wird ist in Perl zumindest ähnlich und/oder oft in besserem (=besser lesbarem) Code machbar und ein alter Hut... Beispiel: anonyme Funktionen. Das den Java-Umsteigern als DIE Weltneuheit schlechthin Verkauft
@MoonKid: Das klingt irgenwie nach einer Auftragsarbeit!? Zudem: Wordcount/-sort ist eigentlich das "hello world" jeder Sprache die sich irgendwie mit "data science" verbunden fühlt bzw in jedem quickstart-manual für frameworks wie Apache Spark... Wenn dann auch noch alternative Lösungen (regex) ausgeschlossen werden bleiben nur noch langweilige/offensichtliche Lösungen z.B. in Scala das für alle Kriterien fertige Funktionen hat (map/flatMap, reduceByKey, count, sort). IMHO nicht wirklich eine Aufgabe für diesen Thread.
Hier noch meine beiden Lösungen - "leider" ebenfalls beide funktional/rekursiv, jeweils als komplettes ausführbares script.
Assembler erschien mir dann doch irgendwie sinnfrei - ins Register schieben und dann bitweise/binär wieder auslesen
Scala:
Code: Alles auswählen
#!/usr/bin/env/ scala
def binary(n: Int): String = { if ( n <= 1 ) n.toString else binary((n/2).toInt).toString + (n%2).toString }
println(binary(args(0).toInt))
Code: Alles auswählen
def binary(n: Int): String = {
if ( n <= 1 ) { n.toString }
else { binary((n/2).toInt).toString + (n%2).toString }
}
Perl:
Code: Alles auswählen
#!/usr/bin/perl -w
use strict;
use warnings;
use 5.020;
sub binary {
my ($n) = @_;
$n <= 1 ? return $n
: return binary(int($n/2)).($n%2);
}
say binary(@ARGV);
Ist mir aber die letzten ~10 Tage seit ich mich mit Scala befasse öfter aufgefallen: Vieles was da als revolutionär, neu und "hip" verkauft wird ist in Perl zumindest ähnlich und/oder oft in besserem (=besser lesbarem) Code machbar und ein alter Hut... Beispiel: anonyme Funktionen. Das den Java-Umsteigern als DIE Weltneuheit schlechthin Verkauft
@MoonKid: Das klingt irgenwie nach einer Auftragsarbeit!? Zudem: Wordcount/-sort ist eigentlich das "hello world" jeder Sprache die sich irgendwie mit "data science" verbunden fühlt bzw in jedem quickstart-manual für frameworks wie Apache Spark... Wenn dann auch noch alternative Lösungen (regex) ausgeschlossen werden bleiben nur noch langweilige/offensichtliche Lösungen z.B. in Scala das für alle Kriterien fertige Funktionen hat (map/flatMap, reduceByKey, count, sort). IMHO nicht wirklich eine Aufgabe für diesen Thread.
So sehe ich das auch...eggy hat geschrieben:@Meilo: Die Frage ist doch viel eher ne ganz normale Frage fürs Forum als was für "hier". Wenn man sagt, "löst es für mich, aber benutzt blos nicht all die coolen Dinge" hat das doch nichts mehr mit dem eigentlichen Grund des Scriptingcontestes zu tun.
Re: Scripting Contest
Seht ihr, genau das meinte ich! Es ist ein einziges Chaos.r4pt0r hat geschrieben:Huch, gehts schon weiter? Ich dachte Mittwoch wäre die Deadline gewesen...
Hier noch meine beiden Lösungen [...]
Use ed once in a while!