Skip to content

Instantly share code, notes, and snippets.

View denkspuren's full-sized avatar
💭
Getting thinking done!

Dominikus Herzberg denkspuren

💭
Getting thinking done!
View GitHub Profile
@denkspuren
denkspuren / fibonacci.java
Created April 7, 2021 18:42
Java Variations on Fibonacci
import java.util.function.LongFunction;
// fibR, fibRM and fibT are the Java equivalents of
// https://youtu.be/oBt53YbR9Kk (10.12.2020)
try {
assert false;
} catch (AssertionError e) {
System.out.println("Cool, assertions are enabled!");
}
@denkspuren
denkspuren / StackGen.java
Last active January 10, 2021 21:17
Eine (typ)generische Stack-Implementierung
// Zur Erläuterung mein Video auf YouTube: https://youtu.be/rSuE2vIUzzk
interface Stackable<T> {
boolean isEmpty();
default T top() { throw new UnsupportedOperationException(); }
default Stackable<T> pop() { throw new UnsupportedOperationException(); }
Stackable<T> push(T element);
}
class StackWithElements<T> implements Stackable<T> {
@denkspuren
denkspuren / Stack.java
Last active January 10, 2021 21:18
Beispielhafte Stack-Implementierung in Java
// Zur Erläuterung mein Video auf YouTube: https://youtu.be/RyrmcXY8oEw
interface Stackable {
boolean isEmpty();
default int top() { throw new UnsupportedOperationException(); }
default Stackable pop() { throw new UnsupportedOperationException(); }
Stackable push(int element);
}
class StackWithElements implements Stackable {
@denkspuren
denkspuren / OOBeispiel.java
Created December 9, 2020 11:34
Ein einführendes Beispiel zur Objektorientierung
class Coordinate {
final int x;
final int y;
Coordinate(int x, int y) {
this.x = x;
this.y = y;
}
float distance(Coordinate other) {
return (float)Math.sqrt((other.x - x) * (other.x - x) + (other.y - y) * (other.y - y));
}
@denkspuren
denkspuren / Calculator.java
Created October 31, 2020 17:24
Berechnung einer Quadratzahl
import java.util.Scanner;
public class Calculator {
public static void main(String... args) {
Scanner input = new Scanner(System.in);
System.out.print("Input number: ");
int n = input.nextInt();
System.out.println("The square of " + n + " is " + square(n));
}
@denkspuren
denkspuren / Nim.java
Last active October 26, 2024 12:44
Implementation of Nim in Java
// Den Code bespreche ich ausführlich im Podcast "Herzbergs Hörsaal" in der Episode
// https://anchor.fm/dominikusherzberg/episodes/PiS-Das-Nim-Spiel-in-Java-programmiert-edks2t
//
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.stream.IntStream;
class Move {
final int row, number;
@denkspuren
denkspuren / t3mc.py
Created May 21, 2019 18:37
Die Monte Carlo Tree Search für Tic-Tac-Toe (Code zu meinem Video https://youtu.be/CjldSexfOuU)
# Code aus meinem YouTube-Video https://youtu.be/CjldSexfOuU
import random, copy
class Board:
def __init__(self):
self.board = [0,0,0,0,0,0,0,0,0]
self.moves = []
self.turn = +1
@denkspuren
denkspuren / UPNEvaluator.Aufgabe.java
Last active June 10, 2018 16:47
Diese Aufgabe verlangt von Ihnen einen Umgang mit Enumerationen, Funktionen, Lambda-Ausdrücken und Strömen
/*
In dieser Aufgabe geht es darum, einen als String gegebenen UPN-Ausdruck in
einen Stapel von Ergebniswerten zu wandeln. Ein Beispiel:
jshell> upn2results.apply("2 3 + 5 4 *", new Stack<Integer>());
$43 ==> [5, 20]
Dieser UPN-Rechner arbeitet ausschließlich mit Ganzzahlen.
Sie werden durch die Aufgabe geführt. Halten Sie sich bitte an alle Angaben.
@denkspuren
denkspuren / confunc.java
Created March 9, 2018 12:34
Konkatenative Programmierung mit Lambda-Ausdrücken (Java)
/* Konkatenative Programmierung mit Lambda-Ausdrücken (Java)
Dominikus Herzberg, @denkspuren, 2018-03-09
Ich liebe das konkatenative Programmierparadigma -- das ist ein Grund,
warum Consize entstanden ist (https://github.com/denkspuren/consize).
Hier ist die konkatenative Berechnung der Fakultät nachgebaut unter
Verwendung von Lambda-Ausdrücken. Ich verwende einen Stapel, der
von Funktion zu Funktion weitergereicht wird. Damit es funktional
"sauber" zugeht, simuliere ich Immutabilität mithilfe von clone().
@denkspuren
denkspuren / mde.java
Last active December 19, 2017 15:44
Thinking about the design of Markdown Excel (to be executed in JShell)
import java.util.*;
import java.util.function.*;
import java.util.stream.*;
// This is a design proposal, see https://gist.github.com/denkspuren/c91b4dd9ffcc4c6040ce271e3fd7caa9
class Cell {
final int index;
final String value;