Scripting Contest

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 08.02.2021 19:19:47

Wann ist nochmal Stichtag? Ich würde auch eine "Lösung" anmelden wollen :arrow: :mrgreen:

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 08.02.2021 19:47:39

Hey wow,

vlt. wirds ja doch noch was... :D
inne hat geschrieben: ↑ zum Beitrag ↑
08.02.2021 19:19:47
Wann ist nochmal Stichtag?
Keine Ahnung... Aber da bis jetzt alle die mitmachen wollen wohl schon eine fertige Loesung haben, koennten wir es zeitnah machen...
Oder wir warten noch, vlt. findet der ein oder andere ja doch noch gefallen an der Idee.

Wie waehre es mit Sonntag der 14'te, so gegen 18:00 Uhr?
Was meint Ihr? Wann habt Ihr Zeit?

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 08.02.2021 19:56:39

heinz hat geschrieben: ↑ zum Beitrag ↑
08.02.2021 19:47:39
Wie waehre es mit Sonntag der 14'te, so gegen 18:00 Uhr?
Ja, wenn keiner bis dahin etwas anderes sagt!

Eine nächste Aufgabe habe ich dann auch für euch/uns :-)

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 14.02.2021 13:23:34

Wer nur immer sporadisch mal einen Kalender braucht und ausdrucken will. Also immer von Heute und für die nächsten 30 Tage, um das Papier auszunutzen. Man hat so die Feiertage usw. aus calender(1). Das wäre eher meine Lösung wie ich einen Kalender brauche :-)
Vlt. mag das noch wer Aufgreifen.

Dabei ist mir aufgefallen, das cal kennt den Schalter -h nicht, obwohl in der Manpage erwähnt. Das ncal schon.

Code: Alles auswählen

#!/usr/bin/env bash
# calprint.bash | lp

tmp="$(mktemp)"

trap "rm -f -- $tmp.txt $tmp.pdf" SIGTERM SIGINT

_gencal() {
ncal -h -A 2
echo
echo -en {0..30}\\n | while read; do
	local d="today + $REPLY days"
	local cal=/usr/share/calendar/calendar.german
	calendar -A 0 -t $(date --date "$d" +"%y%m%d") -f $cal | grep \*
	# TODO Schraffierung nur bis zum Zeilenende?
	date --date "$d" +"%a %d. %b: __________, __________, __________, __________, __________."
!
done # | column -s "."
echo
}

# auskommentieren, um mit libreoffice weiterzumachen...
_gencal; exit

libreoffice --pt "$PRINTER" "$tmp.txt"

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 14.02.2021 16:51:02

Hallo Zusammen,

nach der sehr kompakten Vorlage von inne, traue ich mich kaum mein Script loszulassen... :oops:

Trotzdem, hier ist mein "Codemonster", um Kalender zu erstellen.
Es ist viel umfangreicher geworden als urspruenglich geplant und es erfuellt auch leider nicht alle urspruenglichen Anforderungen von eggy:
z.B. Zwei Wochen auf einer Seite.
Es kommt ein Monat auf eine Seite, die je nach eingestellter Tagesgroesse auch ziemlich gross werden kann...
Das Aussehen kann in grossen Teilen angepasst werden.

Das Script verwendet ein paar Tools von ImageMagic >convert, montage und identify< um den Kalender zu erstellen.

Es ist vorgesehen, das Sie sich ein Monats-Bild Ihrer Wahl in jedes Kalenderblatt einfuegen lassen koennen.
Diese Bilder sind optional. (Siehe: >Zusaetzliche Bilder auf jedem Kalenderblatt:< in der Anleitung.)


Es besteht aus 2-5 Dateien:
1. Das eigentliche Script. NoPaste-Eintrag41269
(Speichern als >kal.sh<)

2. Die Anleitung. NoPaste-Eintrag41270
(Speichern als >anleitung.txt<)

3. Die Farbeinstellungen fuer die Oberflaeche. (Optional, das Script hat sonst das Standardaussehen von dialog.) NoPaste-Eintrag41242
(Speichern als >dialogrc<)

4. Eine Feiertagsliste fuer BaWue. (Optional, kann man auch selbst Erstellen oder ganz weglassen.) NoPaste-Eintrag41272
(Speichern als >feiertagliste.txt<)

5. Die Kalender einstellungen. (Optional, kann man auch aus dem Script erstellen lassen.) NoPaste-Eintrag41271
(Speichern als >einstellungen.txt<)


Meine Empfehlung:
Alle Dateien in einem eigenen Verzeichnis ablegen.
So sind alle Daten, die das Script anlegt/benoetigt (Einstellungen, Feiertage, Farbeinstellungen und Anleitung) an einer Stelle versammelt.
Wenn man es von ueberall her nutzen moechte, einfach einen symbolischen Link in >~/bin< legen.


Starten mit:
kal.sh [JAHR] (JAHR = Jahreszahl (4-Stellig) z.B. 2021.)

Optionen:
----------
kal.sh = Startet das Menue.
kal.sh JAHR = Startet das Menue und setzt das Jahr.
kal.sh -e JAHR = Erstelle Kalender fuer das angegebene Jahr ohne das Menue zu nutzen.
kal.sh --fonts = Erzeugt im aktuellen Verzeichnis eine Datei in der alle verwendbaren Fonts aufgefistet sind. (fonts.png)
kal.sh --help = Diese Kurzhilfe.


Gruss,
heinz

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 14.02.2021 18:12:46

@inne

Hey klasse, calendar und das Verzeichnis /usr/share/calendar/ kannte ich noch nicht.
Wieder was gelernt, Danke!

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 14.02.2021 19:06:31

WAAAAAHHHHHH...
Unglaublich! Die Begeisterungsstuerme ueber diese Thema scheinen kein Ende zu nehmen...

Etwas geknickte Gruesse,
heinz :cry:

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 15.02.2021 08:22:43

Ich hätte eine neue Aufgabe

Fibonacci-Folge

Dazu kam neulich eine Doku, wie oft Zahlen aus der Fibonacci-Folge doch in der Natur vorkommen, wie auch der Goldene Schnitt und am WE kam auch The Da Vinci Code in TV.

Aufgabe: Berechnen der Fibonacci-Folge bis zu einem vom User gegebenen Wert.
Schreibe ein Skript das die Fibonacci-Folge bis zu einem vom Benutzer angebenden Wert berechnet und prüfe ob der Wert eine Fibonacci-Zahl ist.
Rückgabewert soll 0 bei ja und nicht 0 bei nein sein.

Zusatzaufgabe: Finde eine Klasse von Objekten deren Anzahl eine Fibonacci-Zahl ist. Schummle dabei nicht ;-)

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 15.02.2021 10:53:43

inne hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 08:22:43
Ich hätte eine neue Aufgabe
Fibonacci-Folge
Super, klingt sehr interessant.
Ich hoffe es ueberfordert meine geringen Mathekenntnisse nicht... :oops:
inne hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 08:22:43
und prüfe ob der Wert eine Fibonacci-Zahl ist.
Oha, geht schon los...
Wie prueft man das denn?
inne hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 08:22:43
Finde eine Klasse von Objekten deren Anzahl eine Fibonacci-Zahl ist. Schummle dabei nicht ;-)
Ist Schummeln schon "sich im Netz darueber informieren"?
Dann wird es fuer mich sehr schwer... (Die Fibonacci-Zahlen bekomm ich noch hin aber der Test... Hmmm...)

Wann ist Abgabetermin? Naechster Sonntag 21-02-2021?

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 15.02.2021 11:05:53

Stimmt, ich habe nicht erklärt was die Fibonacci-Folge ist. Hintergrund findet man in der Wikipedia. Kurzum: Die Folge beginnt immer mit 0, 1 und wird dann fortgesetzt in dem man aus den letzten zwei Ziffern der Folge die Summe bildet. Also 0 + 1 = 1, dann 1 + 1 = 2, dann 1 + 2 = 3, dann 2 + 3 = 5, dann 3 + 5 = 8 usw. Das ganze hat keinen tieferen Sinn und ist wohl einfach ein Mathematische Spielerei.

Schummeln bezog sich nur auf die Zusatzaufgabe :-)

Gewinner dieser Aufgabe könnte sein, wessen Skript die höchste Zahl/längste Folge berechne kann?
Zuletzt geändert von inne am 15.02.2021 11:28:15, insgesamt 1-mal geändert.

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 15.02.2021 11:09:51

heinz hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 10:53:43
Wann ist Abgabetermin? Naechster Sonntag 21-02-2021?
Nicht so früh.
Ich weiss nicht, ich würde den 31. März sagen?

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Scripting Contest

Beitrag von smutbert » 27.02.2021 12:43:34

inne hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 08:22:43
[...]
Zusatzaufgabe: Finde eine Klasse von Objekten deren Anzahl eine Fibonacci-Zahl ist. Schummle dabei nicht ;-)
Müssen wir mit der Abgabe wirklich noch bis Ende März warten – bis dahin habe ich ja vergessen, dass es einen Scripting Contest gibt? :mrgreen:

Was wäre denn bei der Zusatzaufgabe schummeln und sind da irgendwelche bestimmten Klassen von Objekten gemeint, zB etwas was in der Natur vorkommt oder zählen auch Instanzen von Klassen in Programmen?
Das ist jedenfalls nichts, was man Scripten könnte oder missverstehe ich die Zusatzaufgabe?

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 27.02.2021 18:00:40

smutbert hat geschrieben: ↑ zum Beitrag ↑
27.02.2021 12:43:34
Müssen wir mit der Abgabe wirklich noch bis Ende März warten – bis dahin habe ich ja vergessen, dass es einen Scripting Contest gibt? :mrgreen:
Nein! Ich wäre auch fertig!
Was wäre denn bei der Zusatzaufgabe schummeln
Wenn Du einen Fall nennst, dieser aber erfunden ist z.B.
[...] und sind da irgendwelche bestimmten Klassen von Objekten gemeint, zB etwas was in der Natur vorkommt oder zählen auch Instanzen von Klassen in Programmen?
Das ist jedenfalls nichts, was man Scripten könnte oder missverstehe ich die Zusatzaufgabe?
Ich wollte erst schreiben "Objekte auf/in deinem Computer" habe Computer dann aber weggelassen. Ich habe nur im Computer gesucht. Doch kann man Skripten, z.B. wieviel JPEG Dateien gibt es auf deiner Festplatte usw. Ich habe da 3-4 Sachen nachgesehen.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Scripting Contest

Beitrag von eggy » 27.02.2021 18:15:42

inne hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 11:05:53
Gewinner dieser Aufgabe könnte sein, wessen Skript die höchste Zahl/längste Folge berechne kann?
Sieht man mal von so profanen Einschränkungen wie Wahl der richtigen Sprache und unendlich vorhandenem Speicher ab, sollte es da keinen Gewinner geben können :mrgreen:

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 27.02.2021 18:18:10

eggy hat geschrieben: ↑ zum Beitrag ↑
27.02.2021 18:15:42
inne hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 11:05:53
Gewinner dieser Aufgabe könnte sein, wessen Skript die höchste Zahl/längste Folge berechne kann?
Sieht man mal von so profanen Einschränkungen wie Wahl der richtigen Sprache und unendlich vorhandenem Speicher ab, sollte es da keinen Gewinner geben können :mrgreen:
Das werden wir sehen :-)

In Perl habe ich use bignum; genommen. Das Gespäch hatte ich schon und vermutlich unterscheiden sich auch die Libs für Große Zahlen nicht wirklích? Fundiertes Wissen habe ich da aber nicht :-(

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 28.02.2021 09:41:40

inne hat geschrieben: ↑ zum Beitrag ↑
27.02.2021 18:00:40
smutbert hat geschrieben: ↑ zum Beitrag ↑
27.02.2021 12:43:34
Müssen wir mit der Abgabe wirklich noch bis Ende März warten – bis dahin habe ich ja vergessen, dass es einen Scripting Contest gibt? :mrgreen:
Nein! Ich wäre auch fertig!
Wollen wird dann bis nächsten So. (7. März) noch warten (Damit die anderen es auch mitbekommen) und dann unsere Lösungen zeigen?
Auf die Zusatzaufgaben bin ich sehr gespannt, was andere wohl so gezählt haben. Und ob es eine favorisierte Programmiersprache für Mathematik gibt.

Anders könnten wir auch bis zum 31. März nur die Zusatz aufgaben zeigen :mrgreen:

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Scripting Contest

Beitrag von eggy » 28.02.2021 09:57:04

@inne: ja gibt es, die ist aber alles andere als mein Favorit, sogar ziemlich genau das Gegenteil davon :mrgreen:
schade, dass es keinen spoilertag gibt, ich schick Dir den Link mal per pm

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 28.02.2021 10:52:24

Danke für die PN, man beachte auch den Beiträge von heisenberg zur Aufgabe "rtgen" damals.

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 11.03.2021 15:05:02

Hallo Zusammen,

jetzt da der "Abgabetermin" naeherrueckt, fallt mir noch eine Frage zur Aufgabenstellung ein.
inne hat geschrieben: ↑ zum Beitrag ↑
15.02.2021 08:22:43
Aufgabe: Berechnen der Fibonacci-Folge bis zu einem vom User gegebenen Wert.
Was genau ist dieser Wert?
Ist es die Soundsovielte Fibunacci-Zahl?
z.B.
WERT=7
Fibunacci-Zahl=13

Oder die naechst kleinere Fibunacci-Zahl in der naehe von WERT?
z.B.
WERT=1000
Fibunacci-Zahl=987

Gruss,
heinz

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 11.03.2021 15:23:23

Ich ermittel die Fibonacci-Folge bis Fibonacci-Zahl >= Zahl und geben dann Ja Zahl ist ein Fibonacci-Zahl oder Nein Zahl ist keine Fibonacci-Zahl aus. Wobei ich es erlaube, beliebig viele Zahlen an das Skript zu übergeben. Optimal ist meine Lösung nicht unbedingt, weil ich die komplette Fibonacci-Folge im Speicher behalte.
heinz hat geschrieben: ↑ zum Beitrag ↑
11.03.2021 15:05:02
jetzt da der "Abgabetermin" naeherrueckt,
Der 31. war wohl doch etwas zu weit hin von mir.
Zuletzt geändert von inne am 12.03.2021 10:42:53, insgesamt 3-mal geändert.

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Scripting Contest

Beitrag von smutbert » 11.03.2021 16:10:35

An der Stelle kann ich mir nicht verkneifen darauf hinzuweisen, dass der Name des Herrn Fibunacci soweit ich weiß Leonardo Fibonacci war ☺

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 12.03.2021 09:16:51

inne hat geschrieben: ↑ zum Beitrag ↑
11.03.2021 15:23:23
Ich ermittel die Fibonacci-Folge bis Fibonacci-Zahl >= Zahl und geben dann Ja Zahl ist ein Fibonacci-Zahl oder Nein Zahl ist keine Fibonacci-Zahl aus.
Alles klar...
smutbert hat geschrieben: ↑ zum Beitrag ↑
11.03.2021 16:10:35
dass der Name des Herrn Fibunacci soweit ich weiß Leonardo Fibonacci war ☺
Ups... sorry... Hast natürlich recht... :oops:
Zu meiner Verteidigung:
Im Script hab ich es zu 99% richtig... :mrgreen:

Gruss,
heinz

Benutzeravatar
smutbert
Moderator
Beiträge: 8316
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Scripting Contest

Beitrag von smutbert » 23.03.2021 18:01:49

So, jetzt ist der Abgabetermin verstrichen, oder?
(Es hat aber auch niemand etwas gesagt ☺)

Naja, es nie zu früh und selten zu spät - oder so ähnlich. Bei mir ist diese mir offensichtlich scheinende Lösung herausgekommen:

Code: Alles auswählen

                                           
#!/bin/sh

previous=0
current=1

if ! test "${1}" -gt 0; then
        echo "Ganze Zahl größer 0 erwartet."
        exit 1
fi

while test ${current} -le ${1}; do
        echo ""
        echo -n "${current}"
        new_current=$(echo "${current} + ${previous}" | bc)
        previous=${current}
        current=${new_current}
done

if test ${previous} -eq ${1}; then
        echo " ist eine Fibonacchi-Zahl."
        exit 0
else
        echo "Die angebene Zahl ${1} ist keine Fibonacchi-Zahl."
        exit 2
fi

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Scripting Contest

Beitrag von inne » 23.03.2021 18:10:46

Ok, ich suche meins dann auch mal raus.

Zu deinem (ich habe es als /tmp/foo.sh abgespeichert):

Code: Alles auswählen

$ bash /tmp/foo.sh 9999999999999999999
/tmp/foo.sh: Zeile 6: test: 9999999999999999999: Ganzzahliger Ausdruck erwartet.
Ganze Zahl größer 0 erwartet.
Meins kann schon mal viel viel größere Zahlen prüfen :idea:

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Scripting Contest

Beitrag von heinz » 23.03.2021 18:13:40

Aehnlich sah meine Loesung zuerst auch aus aber die Geschwindigkeit und die Probleme bei Zahlen > 64bit int brachten mich dann zu dieser Loesung:

Code: Alles auswählen

#!/bin/bash
#
# Aufgabe: von inne >> 15.02.2021 08:22:43
# Berechnen der Fibonacci-Folge bis zu einem vom User gegebenen Wert.
# Schreibe ein Skript das die Fibonacci-Folge bis zu einem vom Benutzer
# angebenden Wert berechnet und pr.fe ob der Wert eine Fibonacci-Zahl ist.
# R.ckgabewert soll 0 bei ja und nicht 0 bei nein sein.
#
# Loesung von heinz
#
# bc rechnet so lange Fibonacci-Zahlen aus, bis eine Zahl groesser als der
# eingegebene Wert ist.
# Danach wird die Zahl ausgegeben und getestet, ob sie eine Fibonacci-Zahl ist.
#



# Wurde ein Wert uebergeben?
if test -z "$1"
then
    echo -e "\a\n${0##*/} MAX-WERT\n"
    exit 1
else
# Ist uebergebener Wert eine Zahl?
    if test -n "$(tr -d [:digit:] <<<"$1")"
    then
        echo -e "\a\nEs duerfen nur ganze Zahlen angegeben werden!\n"
        exit 1
    fi
fi



# Fibonacci-Zahl berechnen
ergebnis=$(echo "
    wert=$1

    a=1
    b=0
    c=0
    stelle=1

    while (wert > c)
    {
    c=a+b
    a=b
    b=c
    stelle=stelle+1
    print c,\"\n\"
    }

    quit
"|bc|tr -d ' \\')

# Ergebnis ausgeben
echo "$ergebnis"



# Ergebnis testen
rueckgabe=$(echo "
    wert=$1

    a=1
    b=1
    c=0
    stelle=2

    while (c < wert)
    {
    c=a+b
    a=b
    b=c
    stelle=stelle+1
    }
    
    if (b == wert) print 0
    
    quit
"|bc)
    
# Rueckgabe 0=Ergebnis ist eine Fibonacci-Zahl, 1=Ergebnis ist keine Fibonacci-Zahl
exit ${rueckgabe:-1}

Musste meines nochmal anpassen, um den gleichen Output wie bei Euch zu erhalten.
Zuletzt geändert von heinz am 23.03.2021 18:41:19, insgesamt 3-mal geändert.

Antworten