Seite 2 von 2

Re: [Sammelthread]Verwirrende Code-Fragmente

Verfasst: 11.07.2010, 13:02
von CodingCat
Eine extrem hässliche verkettete Liste mit NULL-Element am Anfang / Ende?!? Ich wüsste jedoch nicht, wieso ich sowas in C++ implementieren sollte. Ob es in Java sinnvoll ist, hängt wohl von dem Kontext ab, aus dem das herausgerissen wurde. ;-)

Re: [Sammelthread]Verwirrende Code-Fragmente

Verfasst: 11.07.2010, 13:06
von zwergmulch
So kann man es auch nennen, ich würde es aber eher "eine funktionale Implementierung eines Stacks" nennen. :lol: 8-)
Sicher nicht unbedingt sinnvoll, aber wohl eine der kürzesten/die kürzeste Implementierung eines Stacks. :D

Edit: Hier noch mal ordentlich:

Code: Alles auswählen

public class Stack<T>{
 public boolean isEmpty () { return true; }
 public T top () { return null; }
 public Stack<T> pop () { return null; }
 public Stack<T> push (final T elem) {
   final Stack<T> old = this;
   return new Stack<T> () {
    @Override public boolean isEmpty () { return false; }
    @Override public T top () { return elem; }
    @Override public Stack<T> pop () { return old; }
  };
 }
}

Re: [Sammelthread]Verwirrende Code-Fragmente

Verfasst: 11.07.2010, 13:07
von CodingCat
Wieso gibst du eigentlich immer false zurück?

Re: [Sammelthread]Verwirrende Code-Fragmente

Verfasst: 11.07.2010, 13:12
von zwergmulch
Ups! Das war ein Fehler. :( Siehe ordentliche Implementierung im neuen Post. Ist jetzt korrigiert.

Re: [Sammelthread]Verwirrende Code-Fragmente

Verfasst: 11.07.2010, 15:24
von Aramis
Das faellt dann wohl in die Kategorie Closure-Missbrauch und sollte eigentlich mit dem Tode bestraft werden :-)

Re: [Sammelthread]Verwirrende Code-Fragmente

Verfasst: 11.07.2010, 15:50
von Zudomon
zwergmulch hat geschrieben:Ok, wird wohl so schnell keiner mehr erraten, also: "Auflösung bitte!"
Schade, dass es keiner rausbekommen hat.
Damit wurde ein Ziffernblockmodul angesprochen. Es hatte 3 Spalten und 4 Zeilen... in der untersten war links und rechts eine Funktionstaste, in der Mitte die 0.
Es gab dazu noch ein Ausgabefeld für 4 Ziffern. In der Ausgabe sollten die gedrückten Tasten erscheinen. Dabei musste beachtet werden, dass die Tasten prellen. Damit die Taste nur einmal angenommen wird, darf sie während des Prellintervalls nicht nochmal registriert werden. Die eine Funktionstaste sollte ein Backspace realisieren, mit der anderen wurden alle Ziffern gelöscht.

Hier nochmal die enthedderte Version:

Code: Alles auswählen

#include <io6811.h>
#include <boardio.h>
#include <int6811.h>
#define A PIA1ADR
#define B PIA1BDR
                   
unsigned char k[12],x=0,          
              a[12]={0,64,0,121,36,48,25,18,2,120,0,16};
unsigned short z=0;

interrupt void TOC5_interrupt(void) 
{
  TFLG1=8;
  TOC5=TCNT+2500;
  B=(x=++x%12)%4;
  A=a[z>>(x%4)*4&15];
  if(!k[x]&&k[x]=!(B&(32<<x%3)))z=(z<<4)*(x!=9)|(z>>4)*(x==9)|x*(x!=9);
}

void main (void) 
{
  PIA1ACR=PIA1BCR=0;
  A=127;B=3; 
  PIA1ACR=PIA1BCR=PIA_DR;
  TMSK1=8;enable_interrupt();
  while(1);
}