[Sammelthread]Verwirrende Code-Fragmente

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: [Sammelthread]Verwirrende Code-Fragmente

Beitrag 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. ;-)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
zwergmulch
Beiträge: 91
Registriert: 07.12.2009, 16:42
Echter Name: Fabian R

Re: [Sammelthread]Verwirrende Code-Fragmente

Beitrag 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; }
  };
 }
}
Zuletzt geändert von zwergmulch am 11.07.2010, 13:11, insgesamt 1-mal geändert.
Bild
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: [Sammelthread]Verwirrende Code-Fragmente

Beitrag von CodingCat »

Wieso gibst du eigentlich immer false zurück?
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
zwergmulch
Beiträge: 91
Registriert: 07.12.2009, 16:42
Echter Name: Fabian R

Re: [Sammelthread]Verwirrende Code-Fragmente

Beitrag von zwergmulch »

Ups! Das war ein Fehler. :( Siehe ordentliche Implementierung im neuen Post. Ist jetzt korrigiert.
Bild
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: [Sammelthread]Verwirrende Code-Fragmente

Beitrag von Aramis »

Das faellt dann wohl in die Kategorie Closure-Missbrauch und sollte eigentlich mit dem Tode bestraft werden :-)
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Sammelthread]Verwirrende Code-Fragmente

Beitrag 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);
}    
Antworten