Skip to content

Instantly share code, notes, and snippets.

View v6ak's full-sized avatar

Vít Šesták v6ak

View GitHub Profile
type ICalculatingStrategy = (Int, Int)=>Int
val AdderStrategy: ICalculatingStrategy = (_+_)
val MultiplierStrategy: ICalculatingStrategy = (_*_)
val CalculatingOperations = Map(
"add" -> AdderStrategy,
"multiply" -> MultiplierStrategy
)
CalculatingOperations("multiply")(3, 2)
trait ICalculatingStrategy {
def calculate(a: Int, b: Int): Int
}
object CalculatingStrategies {
@inline val Add = 2
@inline val Multiply = 3
}
val CalculatingOperations = Map(
interface ICalculatingStrategy{
public int calculate(int a, int b);
}
class CalculatingStrategyFactory{
public static ICalculatingStrategy create(String strategy){
switch(strategy) {
case "add": return new ICalculatingStrategy(){
public int calculate(int a, int b) {
return a + b;
@v6ak
v6ak / gist:6107624
Last active December 20, 2015 09:28
/*
Zrada na tříděných kolekcích. Poskytnu vlastní třídění (zde podle absolutní hodnoty) a nevložím dva podle tohoto třídění ekvivalentní prvky (např. 8 a -8). Vždy tam bude jen jeden z nich.
Co se divím? Pokud chci lepší prioritní frontu (PriorityQueue z nějakého důvodu nestačí) a řeším to pomocí SortedSet, kterou chci třídit podle priority. mám problém. Jakmile mám dva prvky se stejnou prioritou, zůstane jen jeden. Což je na první pohled dost neintuitivní a člověk hledá chybu někde jinde...
Tuto vlastnost má evidentně TreeSet ve Scale. Má ji AFAIK i TreeSet v Javě. (Někde jsem o tom asi četl, ale samozřejmě jsem si na to nevzpomněl, když bylo potřeba...) a mohou ji mít i kolekce v jiných jazycích. Tak se nespalte. Čtěte dokumentaci. Pokud o tomto v dokumentac není zmínka, vyzkoušejte si to na jednoduchém příkladě.
*/
// Tady je záznam z konzole, který demonstruje tuto nepříjemnou vlastnost ve Scale.
scala> collection.mutable.SortedSet[Int]()(Ordering.by(_.abs))
@v6ak
v6ak / Hello.scala
Created October 17, 2013 11:38
Scala coding Dojo
package com.czechscala.blank
trait Monoid[A]{
def op(a1: A, a2: A): A
def zero: A
}
object IntAddition extends Monoid[Int]{
def op(a1: Int, a2: Int):Int = a1+a2
def zero: Int = 0
@v6ak
v6ak / v.rb
Created October 21, 2013 17:53
#!/usr/bin/env ruby
# encoding: UTF-8
require 'net/http'
require 'net/https'
require 'uri'
## config ##
callers = {
"v-sip" => "910xxxxxx", # zpětné volání na SIP (hodí se s dobrým připojením na internet)
"v-phone" => "77xxxxxxx", # zpětné volání na telefon
val stream = new CSVReader(reader).readAll.toStream.tail.
map{Record.importRecord}.filter(_.date.getTime >= from.getTime).filter(_.date.getTime < to.getTime)
@v6ak
v6ak / gist:7625625
Created November 24, 2013 10:27
My idea about RequestWithUser and SecuredRequest inheritance in SecureSocial
abstract class RequestWithUser[A](request: Request[A]) extends WrappedRequest(request){
def userOption: Option[Identity]
}
final case class SecuredRequest[A](user: Identity, request: Request[A]) extends RequestWithUser(request){
override def userOption = Some(user)
}
final case class SimpleRequestWithUser[A](userOption: Option[Identity], request: Request[A]) extends RequestWithUser(request)
@v6ak
v6ak / fadminrc
Created November 27, 2013 12:15
Přihlašovací skript pro wlan_fi na FI MU. Pro klasický Linux i Android.
http_user=...
http_password=...
@v6ak
v6ak / plusn.hs
Last active December 30, 2015 15:09
createPlusN n x = x+n
f = createPlusN 2
g = createPlusN 5
main = putStrLn $ show (f(g 6))