Skip to content

Instantly share code, notes, and snippets.

View kmyokoyama's full-sized avatar
🏡
At home

Kazuki Yokoyama kmyokoyama

🏡
At home
View GitHub Profile
@kmyokoyama
kmyokoyama / reverse.clj
Last active November 20, 2023 18:12
Reverse engineering challenge by Zan
(ns reverse)
;; Challenge: https://x.com/zanfranceschi/status/1726613006921150913?s=20
(defmulti f (fn [n _] (compare n 0)))
(defmethod f 0 [_ coll] coll)
(defmethod f 1 [n coll]
(let [[idx m] (apply max-key #(-> % second :units) (map-indexed vector coll))]
(defn gaps
[s]
(let [first-letter (first s)
last-letter (last s)
lowers (map char (range (int \a) (inc (int \z))))
uppers (map char (range (int \A) (inc (int \Z))))
alphabet (if (Character/isLowerCase ^Character (first s)) lowers uppers)
letters-range (->> alphabet (drop-while #(not= first-letter %)) (take-while #(not= last-letter %)))]
(clojure.string/join "" (sort (clojure.set/difference (set letters-range) (set s))))))
(->> (.ints (java.util.Random.) 10000 3 6)
.iterator
iterator-seq
(map (fn [n] (clojure.string/join (repeatedly n #(.charAt "abcdefghijklmnopqrstuvwxyz0123456789" (.nextInt (java.util.Random.) 36))))))
(filter (fn [s] (= s (clojure.string/reverse s))))
count)
// É realmente possível executar esse código com Java 11+:
// $ java Main.java
/*
O ponto-chave dessa solução é abstrair o repository, responsável pela persistência,
em uma interface agnóstica da real implementação da persistência (seja um banco, seja Redis etc).
A classe UserService fica livre para escolher implementações diferentes de acordo com suas necessidades.
Tudo que ela precisa conhecer é a API genérica de UserRepository.
A implementação concreta pode ser injetada em UserService de algumas formas como via construtor (como no exemplo)
@kmyokoyama
kmyokoyama / kafka-consumer
Created July 10, 2020 00:34
Simple example of a Kafka consumer with Component for development
(ns my.example.kafka.consumer
(:require [com.stuartsierra.component :as component]
[taoensso.timbre :as log]
[clojure.core.async :refer [thread]])
(:import [org.apache.kafka.clients.consumer KafkaConsumer ConsumerRecord]
[java.time Duration]
[java.util Properties List]
[org.apache.kafka.common.errors WakeupException]))
(declare loop-consumer!)
@kmyokoyama
kmyokoyama / question_marks.py
Created October 19, 2017 00:22
Given a string determine if exactly 3 question marks exist between every pair of numbers that add up to 10.
def question_marks(s):
numbers, pairs = list("0123456789"), []
for i1, p1 in enumerate(s):
for i2, p2 in enumerate(s[i1+1:], i1+1):
if p1 not in numbers: continue
elif p2 in numbers and (int(p1) + int(p2)) == 10: pairs.append((i1, i2)); break
else: continue
def has_three_marks(pair):
(p1, p2), counter = pair, 0
for letter in s[p1:p2+1]:
@kmyokoyama
kmyokoyama / tmux-cheatsheet.markdown
Created February 22, 2017 15:18 — forked from MohamedAlaa/tmux-cheatsheet.markdown
tmux shortcuts & cheatsheet

tmux shortcuts & cheatsheet

start new:

tmux

start new with session name:

tmux new -s myname