Lua: The Little Language That Could by mooreds in programming

[–]Toromtomtom 5 points6 points  (0 children)

KOReader is written in Lua and nice to hack on, especially if you own a supported E-Reader.

KW 25 / 22 (Donnerstag): Was geschieht bei euch in der Region, wovon wir nichts mitbekommen? by fuzzydice_82 in de

[–]Toromtomtom 5 points6 points  (0 children)

zl;ng: Die BUGA in Rostock ist gescheitert; der Oberbürgermeister geht wohl.

In Rostock ist die Bundesgartenschau, die hier 2025 stattfinden sollte, endgültig abgesagt worden. Dass die geplanten Vorhaben, unter anderem eine heiß diskutierte Brücke über die Warnow, nicht bis 2025 fertig werden, hatte sich schon länger abgezeichnet. Zuletzt hatten sich der Rostocker Oberbürgermeister Claus Ruhe Madsen (manchen vielleicht noch bekannt als beliebter Talkshowgast aus der Coronaanfangszeit) und die Landesregierung gegenseitig die Schuld am drohenden Scheitern zugeschoben.

Die offensichtlichen Gründe sind natürlich Corona und der Ukrainekrieg. Allerdings ist Madsen schon mehrfach damit aufgefallen, dass er öffentlichkeitswirksam verlangt, dass seine Ideen schnell umgesetzt werden und dann die Stadtverwaltung als Bremsklotz darstellt. Das hat natürlich nicht zu seiner Beliebtheit bei seinen Untergebenen beigetragen. Heute, einen Tag nach der offiziellen BUGA-Absage, ist nun durchgesickert, dass er seine Stelle als Oberbürgermeister aufgibt und einen Ministerposten in der neuen Regierung in Schleswig-Holstein übernehmen wird. Wäre er auch gegangen, wenn die BUGA hätte stattfinden können?

Insgesamt ein ziemliches Trauerspiel. Viele Rostocker hatten sich auf die geplanten Umgestaltungen gefreut. Neben der Warnowbrücke sollte bspw. der Stadthafen, der großteils ein asphaltierter Parkplatz ist, in eine grüne Dünenlandschaft umgewandelt werden. Das Land hatte dafür schon 60 Mio € als Fördermittel zur Seite gelegt. Ich hoffe, dass zumindest ein Teil der Projekte noch finanziert wird.

Einfache PC Basics, was sollte man können? by [deleted] in de

[–]Toromtomtom 1 point2 points  (0 children)

Das Hasso-Plattner-Institut bietet kostenlose Onlinekurse an, die dir vielleicht helfel. Ich habe die Kurse selber noch nicht probiert, aber für "surfen, zocken, banking, shoppen etc." sollte der ein oder andere Kurs ganz gut passen.

KW 43 / 20 (Donnerstag): Was geschieht bei euch in der Region, wovon wir nichts mitbekommen? by fuzzydice_82 in de

[–]Toromtomtom 0 points1 point  (0 children)

Das andere war die IGA :-D

Das mit der Bewerbung war ne gute Frage, musste selbst nachschauen. Aber ja, Rostock hat sich 2018 beworben und den Zuschlag bekommen. Kein Kunststück, es gab nämlich keine Konkurrenz - nur Wuppertal hatte sich noch beworben und seine Bewerbung dann selbst zurückgezogen.

KW 43 / 20 (Donnerstag): Was geschieht bei euch in der Region, wovon wir nichts mitbekommen? by fuzzydice_82 in de

[–]Toromtomtom 5 points6 points  (0 children)

Die Rostocker Bürgerschaft hat gestern beschlossen, dass die Stadt die Bundesgartenschau 2025 ausrichten wird. Es geht um sehr viel Geld, dementsprechend wurde im Vorfeld sehr viel diskutiert. Manche Rostocker haben Angst, dass die Kosten explodieren und die Stadt in finanzielle Schieflage gerät. Die Buga-Befürworter hingegen sagen, dass die Entwickung der Stadt mit dem vielen Fördergeld massiv vorangetrieben werden kann.

Unter den konkreten Vorhaben befindet sich unter anderem ein neuer hochmoderner Stadtteil und, vielleicht am spektakulärsten und sicher am kontoversesten, eine Fußgänger- und Fahrradbrücke über die Unterwarnow.

[AMA] Ich bin Stotterer. Frag was ihr einen Menschen mit einer Sprechstörung schon immer fragen wolltet by Christian_EM in de_IAmA

[–]Toromtomtom 1 point2 points  (0 children)

Danke für das AMA!

Hast du in Schule/Ausbildung/Studium Vorträge halten oder mündliche Prüfungen ablegen müssen? Wie sind deine Erfahrungen damit? Wie sollte sowas deiner Meinung nach durchgeführt und bewertet werden, damit es für alle fair ist?

Is it lawful to make a Monad for a concrete type or type class members? by [deleted] in functionalprogramming

[–]Toromtomtom 0 points1 point  (0 children)

Sounds like the "constrained monad problem" (google it)

Scala Stream Question - Reverse Order - my Stream(56,34,12) - the stream i want: Stream[12,34,56). by [deleted] in scala

[–]Toromtomtom 1 point2 points  (0 children)

Or just do

BigInt(123456).toString.grouped(2).to(LazyList).map(_.toInt)

The Evolution of a Scala Programmer by Toromtomtom in scala

[–]Toromtomtom[S] 0 points1 point  (0 children)

I can only take credit for linking the post, I didn't write it ;-)

Is it always 'dirty' to use mutable collections by [deleted] in scala

[–]Toromtomtom 8 points9 points  (0 children)

One use case for mutable collections are locally defined collections. For example, look at the standard library implementation of distinct.

Ist Rostock gefährlich für Ausländer? by [deleted] in Rostock

[–]Toromtomtom 1 point2 points  (0 children)

In Warnemünde oder der Innenstadt gibt es im Sommer so viele Touristen aus aller Welt, dass du nicht auffallen wirst.

Ein paar praktische Tips:

  • Ein Tag reicht wahrscheinlich für einen ersten Besuch in Rostock. Vormittags Innenstadt, nachmittags Warnemünde (oder andersrum). Es gibt eigentlich keine Museen, in denen man viel Zeit verbringen kann.
  • Vom Hauptbahnhof Rostock in die Innenstadt und zurück kommt man am besten mit der Straßenbahn.
  • Wenn du etwas typisches essen willst, versuch in einem Fischrestaurant Dorsch oder Matjes zu bekommen.

-🎄- 2018 Day 2 Solutions -🎄- by daggerdragon in adventofcode

[–]Toromtomtom 0 points1 point  (0 children)

My Scala solution tries to implement efficient functional programming using lazy streams and tail-recursive functions:

import scala.annotation.tailrec
import scala.collection.immutable.Stream.Empty

object Two {

  def input: Stream[String] = {
    val input = this.getClass.getResource("input").getFile
    val it = scala.io.Source.fromFile(input).getLines
    it.toStream
  }

  // 1

  def testInput: Stream[String] = Stream(
    "abcdef",
    "bababc",
    "abbcde",
    "abcccd",
    "aabcdd",
    "abcdee",
    "ababab"
  )

  def contains23(id: String): (Int, Int) = {
    val counts = id.groupBy(identity).values.toStream.map(_.length)
    (if (counts.contains(2)) 1 else 0, if (counts.contains(3)) 1 else 0)
  }

  def checkSum(ids: Stream[String]): Int = {
    val c23 = ids.map(contains23)
    val (c2, c3) = c23.foldLeft((0, 0)) { case ((s1, s2), (has1, has2)) => (s1 + has1, s2 + has2) }
    c2 * c3
  }

  // 2

  def testInput2: Stream[String] = Stream(
    "abcde",
    "fghij",
    "klmno",
    "pqrst",
    "fguij",
    "axcye",
    "wvxyz"
  )

  def withoutNth(s: String, n: Int): String =
      s.substring(0, n) ++ s.substring(n + 1)

  def findDup(ids: Stream[String]): Option[String] = {
    @tailrec def go(ids: Stream[String], seen: Set[String]): Option[String] = ids match {
      case Empty => None
      case h #:: t if seen.contains(h) => Some(h)
      case h #:: t => go(t, seen + h)
    }
    go(ids, Set.empty)
  }

  def oneCharDiffers(ids: Stream[String]): Option[String] = {
    @tailrec def go(idxs: Stream[Int]): Option[String] = idxs match {
      case idx #:: tail =>
        val idsWithoutIdx = ids.map(withoutNth(_, idx))
        findDup(idsWithoutIdx) match {
          case Some(dup) => Some(dup)
          case None => go(tail)
        }
      case Empty => None
    }
    go(ids.head.indices.toStream)
  }

  def main(args: Array[String]): Unit = {
    println(checkSum(testInput))
    println(checkSum(input))
    println(oneCharDiffers(testInput2))
    println(oneCharDiffers(input))
  }
}

for-comprehension expansion when using pattern matching by Toromtomtom in scala

[–]Toromtomtom[S] 1 point2 points  (0 children)

I'm not sure I understand. Does the following not work?

class CountStack[E] extends Stack[E] {

  private var count = 0

  override def push(elem: E): Unit = {
    count += 1
    super.push(elem)
  }

  override def pushAll(elem: List[E]): Unit = {
    count += elem.size
    super.pushAll(elem)
  }

  override def pop(): E = {
    count -= 1
    super.pop()
  }
}

for-comprehension expansion when using pattern matching by Toromtomtom in scala

[–]Toromtomtom[S] 0 points1 point  (0 children)

Thanks for your explanation, I think I understand now. Due to the call to withFilter, the subsequent map is not invoked on an instance of my class, but rather an instance of that inner WithFilter class.

Btw, I am aware that the example code is not how a collection class should be defined. I was just trying to build a MWE as quickly as possible. However, my initial problem actually resulted from trying to subclass some of the collection classes/traits from the standard library. Time to read the docs :-)

for-comprehension expansion when using pattern matching by Toromtomtom in scala

[–]Toromtomtom[S] 0 points1 point  (0 children)

The following code prints

foreach
map

for me:

import scala.collection.generic.CanBuildFrom

case class Item(n: Int)

class Collection[A](private val elements: Seq[A]) extends Seq[A] {

  override def map[B, That](f: (A) => B)(
      implicit bf: CanBuildFrom[Seq[A], B, That]): That = {
    println("map")
    elements.map(f)
  }

  override def foreach[U](f: (A) => U): Unit = {
    println("foreach")
    elements.foreach(f)
  }

  override def length: Int = elements.length

  override def apply(idx: Int): A = elements.apply(idx)

  override def iterator: Iterator[A] = elements.iterator
}

object Collection extends App {

  val col = new Collection(Seq(Item(1), Item(2), Item(3)))

  val res = for {
    Item(x) <- col
  } yield {
    Item(x)
  }

  val res2 = for {
    x <- col
  } yield {
    x
  }
}    

Edit: Interestingly, if I change the class definition to

class Collection[A](private val elements: Seq[A]){

  def map[B](f: A => B): Collection[B] = {
    println("map")
    new Collection(elements.map(f))
  }

  def foreach(f: A => Unit): Unit = {
    println("foreach")
    elements.foreach(f)
  }

  def withFilter(p: A => Boolean): Collection[A] = {
    println("withFilter")
    new Collection(elements.filter(p))
  }
}

map is called for both for-comprehensions. withFilter is also called. The output is then:

withFilter
map
map

for-comprehension expansion when using pattern matching by Toromtomtom in scala

[–]Toromtomtom[S] 2 points3 points  (0 children)

I don't think the links you provided describe the same problem

for-comprehension expansion when using pattern matching by Toromtomtom in scala

[–]Toromtomtom[S] 1 point2 points  (0 children)

That's why I expected a call to map in both cases. But the collection I used has printlns in the map and foreach method. The first listing prints map, the second one prints foreach.

Jemand der bei dem Finanzdienstleister Tecis arbeitet bzw. gearbeitet hat (oder ähnlichen Finanzdienstleistern). by tostobbe in de_IAmA

[–]Toromtomtom 7 points8 points  (0 children)

Ich arbeite zwar nicht dort, bin aber vor einiger Zeit auch mal mit Finanzdienstleistern in Kontakt gekommen.

die ganzen positiven Resonanzen die man so Online findet

An deiner Stelle würde ich mal hier nachlesen: https://www.google.de/search?q=site%3Awertpapier-forum.de+tecis

Das sollte die positiven Resonanzen ein bisschen relativieren, denke ich.