follow braegel at http://twitter.com
www.flickr.com
Fotos von Bernd Brägelmann Mehr Fotos von Bernd Brägelmann
  • Blogroll

  • Scripte

  • Mehr von mir

  • Extern

  • July 5, 2010

    Exporting examination codes from Siemens Syngo RIS

    View my short perl script to create a list of examinations codes from a Siemens Syngo RIS.

    First create an export of the examination tree. Usually this file ends with .tre.

    They you can apply this script to that file and you receive a list of all examination codes.

    Use at your own risk!

    Here you are:

    get_exam_code.pl

    #!/usr/bin/perl

    open IN, "<$ARGV[0]" || die;

    while ($data=){
    while ($data=~s/[\w \d\xe4\xf6\xfc].\x00([\w \d\xe4\xf6\xfc]{1,})// ){
    print “$1\n”;
    $hits++
    }
    }

    close IN;

    print “Hits: $hits\n”;

    Topics: Allgemein | No Comments »

    June 5, 2010

    Weinkrügeproblem

    Hier meine Java Lösung für das Weinkrügeproblem aus dem Buch Wissensverarbeitung - Eine Einführung in die Künstliche Intelligenz für Informatiker und Ingenieure - I. Boersch, J. Heinsohn, R. Socher - 2. Auflage.

    Die Frage ist, wie man den Wein aus 3 Weinkrügen

    so verteilt, dass sich im 9 Liter Krug 6 Liter und im 4 Liter Krug 3 Liter Wein befinden?

    Ist mein erster Java Versuch und ich bin möchtig stolz darauf. Bin für konstruktive Kritik offen!

    WeinkruegeproblemV2.java:


    import java.util.*;

    public class WeinkruegeproblemV2 {

    public static int [] init(){
    int [] startstatus = {9,0,0,};
    // int [] startstatus = {6,0,3,};

    return startstatus;
    }

    public static boolean zielerreicht(Knoten k){
    int [] zielstatus = {6,0,3,};
    return Arrays.equals(k.getStatus(), zielstatus);
    }

    public static int [] umschuetten (int i, int j, Knoten k){
    int umfuellmenge = 0;
    int [] status = k.getStatus().clone();
    int [] maxinhalt = {9,7,4,};
    umfuellmenge = Math.min(k.getStatus()[i],maxinhalt[j]-k.getStatus()[j]);
    status[i]=k.getStatus()[i] - umfuellmenge;
    status[j]=k.getStatus()[j] + umfuellmenge;
    return status;
    }

    public static boolean doublette(Knoten k){
    int i;
    // System.out.println(”Checke Pfad mit “+k.getPfad().size()+ ” Knoten auf Doublette.”);
    for (i=0;i if (Arrays.equals(k.getStatus(),k.getPfad().get(i).getStatus())){
    // System.out.println("Doublette: "+i+Arrays.toString(k.getStatus())+" "+Arrays.toString(k.getPfad().get(i).getStatus()));
    return true;
    }
    // System.out.println("Keine Doublette: "+i+Arrays.toString(k.getStatus())+" "+Arrays.toString(k.getPfad().get(i).getStatus()));
    }
    return false;
    }

    public static ArrayList expand(Knoten k){
    ArrayList kinder = new ArrayList();
    int i,j;
    Knoten kind = new Knoten();

    for (i=0;i<=2;i++){
    for (j=0;j<=2;j++){
    if (j!=i){
    kind.setStatus(umschuetten(i,j,k));
    kind.setPfad((ArrayList)k.getPfad());
    // zeigeKnotenliste(k.getPfad());
    // System.out.println(Arrays.toString(kind.getStatus()));

    if (!Arrays.equals(kind.getStatus(),k.getStatus())){

    if (!doublette(kind)){
    // System.out.println(”Neues Kind: “+Arrays.toString(kind.getStatus()));
    // kind.addPfad(kind);
    kinder.add(new Knoten( kind.getStatus(), kind.getPfad() ));
    }
    }
    }
    }

    }

    System.out.println(”Kinder:”);
    zeigeKnotenliste(kinder);
    return kinder;
    }

    public static void zeigeKnotenliste(ArrayList liste){
    int i;

    for (i=0;i System.out.println(i+" "+Arrays.toString(liste.get(i).getStatus()));
    // System.out.println("Path:");
    // zeigeKnotenliste(liste.get(i).getPfad());
    // System.out.println();
    }
    System.out.println("==> “+ liste.size() + ” Elemente”);

    }

    public static void main(String[] args){
    int dummy;
    ArrayList agenda = new ArrayList();

    Knoten z = new Knoten();
    // zeigeKnotenliste(z.getPfad());
    z.setStatus(init());
    // zeigeKnotenliste(z.getPfad());

    agenda.add(z);

    while(!zielerreicht(z)){
    // for (dummy=0;dummy<2;dummy++){
    z.addPfad(z);
    System.out.println("\nExpandiere "+Arrays.toString(z.getStatus()));
    // System.out.println("Pfad :");
    // zeigeKnotenliste(z.getPfad());
    agenda.addAll(expand(z)); // Breitensuche
    // System.out.println("Agenda nach Zufügung der Kinder:");
    // zeigeKnotenliste(agenda);
    agenda.remove(0);
    System.out.println("Agenda:");
    zeigeKnotenliste(agenda);
    z = agenda.get(0);
    }

    // DEBUGGING
    // System.out.println(Arrays.toString( z.getStatus() ));
    // z.setStatus(init());
    // System.out.println(Arrays.toString( z.getStatus() ));
    // Knoten z1 = new Knoten();
    // z1.setStatus(umschuetten(0,1,z));
    // z1.addPfad(z);
    // System.out.println(Arrays.toString( z.getStatus() ));
    // System.out.println(Arrays.toString( z1.getStatus() ));
    // System.out.println(zielerreicht(z));

    System.out.println("\nLösung gefunden");
    zeigeKnotenliste(z.getPfad());
    }
    }


    Knoten.java:


    import java.util.*;

    public class Knoten {
    private int[] status = {-1,-1,-1, };
    private ArrayList pfad = new ArrayList();

    Knoten(){ // Ueberladen
    }

    Knoten(int [] ueb_status){ // Ueberladen
    status = ueb_status.clone();
    }

    Knoten(int [] ueb_status, ArrayList ueb_pfad){ // Ueberladen
    status = ueb_status.clone();
    pfad = (ArrayList)ueb_pfad.clone();
    }

    public void setStatus(int[] status){
    this.status = status.clone();
    }

    public void setPfad(ArrayList ueb_pfad){
    pfad=(ArrayList)ueb_pfad.clone();
    }

    public void addPfad(Knoten ueb_pfad){
    pfad.add(ueb_pfad);
    }

    public int[] getStatus(){
    return this.status;
    }

    public ArrayList getPfad(){
    return this.pfad;
    }

    }

    Topics: Allgemein | No Comments »

    May 16, 2010

    Adrenal Gland Calculator ported to Mac

    Today I ported my Adrenal Gland Calculator from JavaScript to Mac (Objective-C).

    Download. Source code available via github.

    Topics: Allgemein | No Comments »

    May 9, 2010

    Adrenal Gland Calculator

    Today I release my first JavaScript Project: An Adrenal Gland Calculator. It calculates some CT and MRI related indicators that may help in differentiating benign from malignant adrenal masses

    Topics: Allgemein | No Comments »

    February 18, 2010

    Arduino XbeeShield

    If you consider problems sending carriage returns with Arduino environment to your XbeeShield:

    Try Tiny serial instead.

    Topics: Allgemein | No Comments »

    February 16, 2010

    Powerpoint Videos

    Das leidige Thema Videos in Powerpoint hat mich mal wieder beschäftigt.

    Hier eine Anleitung, die bei mir zuletzt funktioniert hat. Bildquelle war ein Arthroskopieturm in der Orthopädie. Ich hab auf einem Mac mit macosx 10.6 (snowleopard) gearbeitet.

    Anleitung:

    1. VLC öffnen
    2. Ablage => Export Assistent
    3. Transcodieren auswählen
    4. Nächstes
    5. Wählen Sie einen Stream (Datei auswählen)
    6. Nächstes
    7. Video transcodieren Haken setzen
    8. MPEG-4 Video
    9. Bitrate 1024
    10. Audio transcodieren Haken nicht setzen
    11. MPEG 4 / MP4 auswählen
    12. Nächstes
    13. Wählen klicken und Dateinamen für den Export wählen. Sollte mit “.mp4″ enden
    14. Nächstes
    15. Fertig
    16. Kurz warten bis die Datei Transcodiert ist
    17. Datei mit Control-Klick (rechte Maustaste) Öffnen mit Quicktime Player auswählen
    18. In Quicktime Player Datei
    19. in Quicktime: Ablage => Sichern unter
    20. Format : iPhone auswählen
    21. Sichern
    22. Datei wird dadurch umbenannt in “.m4v” !
    23. Diese Datei lässt sich dann in Powerpoint öffnen

    Topics: Allgemein | 1 Comment »

    January 15, 2010

    Recht zum Widerstand

    Anlässlich der Debatte über Nacktscanner kommt mir der Artikel 20 GG in den Sinn:

    (4) Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist.

    Zieht euch warm an …. (das war jetzt mehr auf die Nacktscanner bezogen)

    Topics: Allgemein | No Comments »

    September 20, 2009

    Respekt: Nichtwähler

    Topics: Allgemein | 2 Comments »

    September 14, 2009

    Rette Deine Freiheit

    Ansehbefehl!

    Topics: Allgemein | No Comments »

    September 14, 2009

    Staatliche Prügeltrupps

    Die Polizei hat bei mir den letzten Respekt verloren.

    Hier dokumentiert der CCC, wie die Polizei einen friedlichen Fahrradfahrer auf der Demo Freiheit Statt Angst am Samstag in Berlin brutal verprügelt hat.

    Mit Rechtsstaat hat das ja wohl nichts mehr zu tun. Wie lange war es nochmal her, dass in Deutschland paramilitärische Truppen schwarze Uniformen trugen?

    Topics: Allgemein | No Comments »

    « Previous Entries <<|>>