Gunnar Bittersmann: Rätsel zum Wochenende

Hi,
Um euch die Langeweile zu vertreiben:
Wozu dient diese Funktion?

function f(x) {  
  return (!(x % 4) && (!(x % 0620) || (x % 0144)));  
}

Live long and prosper,
Gunnar

--
„Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  1. Hallo,

    Wozu dient diese Funktion?

    function f(x) {

    return (!(x % 4) && (!(x % 0620) || (x % 0144)));
    }

      
    Zum Ermitteln, ob x ein Schaltjahr ist.  
      
    MfG, Thomas  
    
    
    1. He Thomas,
      Es hieß „Rätsel zum Wochenende“, nicht „Rätsel für 4 Minuten“!!!11 ;-)

      Da bin ich baff. Muss ich mir das nächste Mal was Schwierigeres ausdenken. Zumindest was, was sich nicht mit einer for-Schleife lösen lässt … oder wie hast du es gefunden?

      Live long and prosper,
      Gunnar

      --
      „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
      1. Hallo,

        … oder wie hast du es gefunden?

        Division durch 4 im Kontext mit Division durch 400 bzw. 100 kam mir sehr bekannt vor.

        MfG, Thomas

        1. Na gut, die Zahlen 4, 100 und 400 in Zusammenhang mit Teilbarkeit sind verräterisch; da muss man gar nicht erst versuchen, durch den kryptischen Code durchzusteigen.

          Andere Frage (worauf ich die Antwort nicht weiß): Lässt sich das noch kürzer aufschreiben? (Womit natürlich nicht das Weglassen von Whitespaces und des ; gemeint ist.)

          Live long and prosper,
          Gunnar

          --
          „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
          1. Hi,

            Na gut, die Zahlen 4, 100 und 400 in Zusammenhang mit Teilbarkeit sind verräterisch; da muss man gar nicht erst versuchen, durch den kryptischen Code durchzusteigen.

            ich mag Dich ja nicht enttäuschen; aber kryptisch ist der Code eigentlich gar nicht. Lediglich die Oktalzahlen lassen vermuten, dass die Intention des Codes eine andere ist - mehr als einen kurzen Moment der Verwirrung bringt das auch nicht. Den Code zu lesen und ihn zu verstehen sind fast deckungsgleich.

            Andere Frage (worauf ich die Antwort nicht weiß): Lässt sich das noch kürzer aufschreiben?

            Das würde ich nicht versuchen. Der Code ist eher noch zu unausführlich - wenn man bedenkt, dass er erst ab 1581 Gültigkeit besitzt und schon in ein paar Jahrtausenden wieder korrigiert werden muss ;-)

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Den Code zu lesen und ihn zu verstehen sind fast deckungsgleich.

              Cheatah,
              Kann es sein, dass du zu viel Code liest? ;-)

              wenn man bedenkt, dass er erst ab 1581 Gültigkeit besitzt

              http://de.wikipedia.org/wiki/Kalender#Gregorianischer_Kalender sagt 1582.

              und schon in ein paar Jahrtausenden wieder korrigiert werden muss ;-)

              Damit der Code nicht korrigiert werden muss, wird ja an der Jahreslänge korrigiert. 2005 ist eine Sekunde länger als andere Jahre. Nutzt sie gut!

              Aber wieso soll „in ein paar Jahrtausenden wieder korrigiert werden [müssen]“? Schon in ein paar Jahrhunderten wird nicht mehr das (Gregorianische) Datum angegeben, sondern die Sternzeit. Wann genau ist der Wechsel eigentlich? Christoph Schnauß könnte es inzwischen wissen.

              Live long and prosper,
              Gunnar

              --
              „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
              1. Hi,

                Kann es sein, dass du zu viel Code liest? ;-)

                gibt's noch was anderes? ;-)

                wenn man bedenkt, dass er erst ab 1581 Gültigkeit besitzt
                http://de.wikipedia.org/wiki/Kalender#Gregorianischer_Kalender sagt 1582.

                Bitte entschuldige den Fehler in meinem Gedächtnisprotokoll.

                Aber wieso soll „in ein paar Jahrtausenden wieder korrigiert werden [müssen]“? Schon in ein paar Jahrhunderten wird nicht mehr das (Gregorianische) Datum angegeben, sondern die Sternzeit.

                Das ist natürlich ein guter Punkt. Sollte diese Zukunft jedoch wider Erwarten nicht eintreten, muss ca. im Jahre 4900 wieder korrigiert werden.

                Wann genau ist der Wechsel eigentlich? Christoph Schnauß könnte es inzwischen wissen.

                Dann warten wir doch einfach mal, was er dazu sagt :-)

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. orrrr gunnar.....

                  zwei - drei post vor dir hab ich doch auch nen schönes wochenendrätsel gepostet!
                  warum rätselst du da nicht nen bißchen mit? ;-)

                  aber hier hab ich natürlich keine antwort! °°

                  cya

                2. Bitte entschuldige den Fehler in meinem Gedächtnisprotokoll.

                  Na gut, Cheatah, wenn du meinen Fehler entschuldist: 2005 bezog sich auf UTC. Bei uns ist es, wenn die Schaltsekunde kommt, schon 2006.

                  Sollte diese Zukunft jedoch wider Erwarten nicht eintreten,

                  Sollte Gene Roddenberry irren?

                  Live long and prosper,
                  Gunnar

                  --
                  „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
                3. Kann es sein, dass du zu viel Code liest? ;-)

                  gibt's noch was anderes? ;-)

                  Ja, Cheatah, TFM bspw. ;-)

                  Wobei M nicht für „Manuela“ steht. ;-)

                  Live long and prosper,
                  Gunnar

                  --
                  „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
              2. Hi,

                wenn man bedenkt, dass er erst ab 1581 Gültigkeit besitzt

                http://de.wikipedia.org/wiki/Kalender#Gregorianischer_Kalender sagt 1582.

                Ortsabhängig. Die Umstellung auf den gregorianischen Kalender erfolgte nicht überall zur gleichen Zeit.

                Cervantes und Shakespeare sind beide am 23. April 1616 gestorben, zwischen beiden Todesfällen lagen aber ca. 10 Tage.

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Schreinerei Waechter
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              3. Tach,

                ... sondern die Sternzeit. Wann genau ist der Wechsel eigentlich? Christoph Schnauß könnte es inzwischen wissen.

                also 2161 (NX-01 außer Dienst) gibt es sie noch nicht, und 2265 (Kirk übernimmt Enterprise) wird sie schon benutzt, aber 2254 (The Cage) wird sie noch nicht erwähnt.

                mfg
                Woodfighter

              4. n'Abend!

                wenn man bedenkt, dass er erst ab 1581 Gültigkeit besitzt
                http://de.wikipedia.org/wiki/Kalender#Gregorianischer_Kalender sagt 1582.

                Da bin ich ja beruhigt, dass mein Gedächtnis noch richtig geht.

                Aber wieso soll „in ein paar Jahrtausenden wieder korrigiert werden [müssen]“? Schon in ein paar Jahrhunderten wird nicht mehr das (Gregorianische) Datum angegeben, sondern die Sternzeit.

                Says who?
                Zu dumm nur, dass die Sternzeit so, wie sie in der Astronomie nun einmal definiert ist, höchstens die Tageszeit angeben kann, keinesfalls aber als Kalenderersatz taugt.
                Da bietet sich schon eher das Julianische Datum als zukunftsträchtiges Format an. Damit hätte dann auch die dauernde Schaltjahr-Diskussion ein Ende, und man hätte endlich ein Datumsformat, bei dem sich auch Intervalle und Zeitabstände sehr leicht berechnen lassen.

                Schönen Abend noch,

                Martin

                1. Zu dumm nur, dass die Sternzeit […]

                  Martin,
                  Wer redet denn von Sternzeit?

                  Ich rede natürlich von Sternzeit.

                  Siehe auch Sternzeit , Sternzeit, …

                  Live long and prosper,
                  Gunnar

                  --
                  „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
    2. [Nachtrag:]

      Zum Ermitteln, ob x ein Schaltjahr ist.

      ... wobei sich dazu auch das JS-Datumsobjekt bemuehen laesst:

        
      function sj(x)  
      {  
        return (new Date(x,2,0).getDate() == 29) ? true : false;  
      }
      

      MfG, Thomas

      1. ... wobei sich dazu auch das JS-Datumsobjekt bemuehen laesst:

        Thomas,
        Auch nicht dumm.

        Aber wozu der Schwanz?

        return (new Date(x,2,0).getDate() == 29) ? true : false;

        Statt „wenn A wahr ist, sag wahr, sonst falsch“ kannste doch gleich sagen „sag A“:

        return (new Date(x,2,0).getDate() == 29);

        Live long and prosper,
        Gunnar

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
        1. Hi Gunnar,

          Aber wozu der Schwanz?
          return (new Date(x,2,0).getDate() == 29);

          die gleiche Idee, aber du hast es ein paar Minuten früher gesehen...

          So long,

          Martin

          1. die gleiche Idee, aber du hast es ein paar Minuten früher gesehen...

            Martin,
            Na so’n Pech. Erst schlägt dich Thomas, dann ich. Ich hoffe, du hast jemanden, der dich tröstet. ;-)

            Live long and prosper,
            Gunnar

            --
            „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
            1. Hallo,

              Na so’n Pech. Erst schlägt dich Thomas, dann ich. Ich hoffe, du hast jemanden, der dich tröstet. ;-)

              danke für die Anteilnahme. Ich denke, ich komm drüber hinweg.  :-)
              Ciao,

              Martin

        2. Hallo,

          Statt „wenn A wahr ist, sag wahr, sonst falsch“ kannste doch gleich sagen „sag A“:

          return (new Date(x,2,0).getDate() == 29);

          Klar doch, war ja auch nur eine spontane gedankliche Umsetzung ohne Optimierung -- wer Raetsel aufgibt, soll auch etwas zu tun bekommen ;-).

          Ansonsten finde ich mein Konstrukt rein von der Lesbarkeit her so schlecht nicht ...

          MfG, Thomas

        3. Hi,

          Auch nicht dumm.

          aber reichlich ineffizient. Das Erzeugen des Date-Objektes nebst der Berechnung eines Tages des Jahres dürfte ein _ganz_ klein wenig mehr Zeit kosten als ein paar Modulo-Rechnungen ;-)

          Statt „wenn A wahr ist, sag wahr, sonst falsch“ kannste doch gleich sagen „sag A“:

          Sicher doch. Aber wer "A" sagt, muss bekanntlich auch "men" sagen :-)

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Hi Cheatah,

            Aber wer "A" sagt, muss bekanntlich auch "men" sagen :-)

            das Sprichwort kannte ich irgendwie anders. Ich hatte da irgendwie das Suffix "-loch" im Gedächtnis... ;-)

            *scnr*

            Martin

            1. Martin,
              Diesmal warst du schneller. ;-)

              Live long and prosper,
              Gunnar

              --
              „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
            2. Hi,

              Aber wer "A" sagt, muss bekanntlich auch "men" sagen :-)
              das Sprichwort kannte ich irgendwie anders. Ich hatte da irgendwie das Suffix "-loch" im Gedächtnis... ;-)

              damit funktioniert aber die Fortführung "Wer 'Amen' sagt, muss auch 'Batman' sagen." nicht mehr ;-)

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
          2. Auch nicht dumm.
            aber reichlich ineffizient.

            Aber dennoch nicht unelegant. ;-)

            Apropos Effizienz: Ich hatte versucht, die Bedingungen so anzuordnen, dass im Mittel so wenig wie möglich abgefragt werden müssen. (Der Interpreter schaut sich ja bei UND die zweite nicht an, wenn die erste schon falsch ist; und bei ODER nicht, wenn die erste wahr ist.)

            Ist mir das gelungen oder geht es optimaler?

            Live long and prosper,
            Gunnar

            --
            „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
            1. Hi,

              optimaler?

              Aua!

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              Schreinerei Waechter
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. optimaler?
                Aua!

                ’Tschuldigung.

                Live long and prosper,
                Gunnar

                --
                „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  2. Moin Gunnar,

    Um euch die Langeweile zu vertreiben:
    Wozu dient diese Funktion?

    function f(x) {

    return (!(x % 4) && (!(x % 0620) || (x % 0144)));
    }

      
    Auf den ersten Blick Kraut und Rüben. Oktalzahlen eignen sich prima dazu, numerische Sachverhalte zu verschleiern. Nehmen wir doch mal die dezimalen Formen:  
      
    
    > ~~~javascript
    
    function f(x) {  
    
    >   return (!(x % 4) && (!(x % 400) || (x % 100)));  
    > }
    
    

    Et voilà, dann sieht das doch ganz gefährlich nach einer Formel

    f(x) = bool( x ist ein Schaltjahr )

    aus. War doch ganz einfach. ;-)
    Schönes Wochenende noch,

    Martin