Skip to content

Instantly share code, notes, and snippets.

View bahmanm's full-sized avatar

Bahman Movaqar bahmanm

View GitHub Profile
@bahmanm
bahmanm / simple-atoi.java
Created June 20, 2023 23:30
Nested or sequential try-catch blocks?
/**
* Using nested try-catch blocks.
*
* @param str a string representing an integer
* @return smallest integer type or null
*/
Number atoi_NestedTryCatch(String str) {
try {
return Integer.valueOf(str);
} catch (NumberFormatException ignore1) {
@bahmanm
bahmanm / my-custom-config-loader.el
Created June 15, 2023 20:39
eLisp: Save and parse JSON
;; to save an object into a json file
(with-temp-buffer
(json-insert '(:foo "bar"))
(write-file "~/tmp/my.json"))
;; load a json file as hash table
(with-temp-buffer
(insert-file-contents "~/tmp/my.json")
(json-parse-buffer))
@bahmanm
bahmanm / gradle-init.sh
Last active January 30, 2019 09:00
Groovy and Spock (with Gradle)
#!/usr/bin/env bash
###
# Initialises a Gradle project with Groovy and Spock.
#
# How To Use?
#
# 1. Save the file, e.g. `gradle-init.sh`
# 2. Make it executable: `$ chmod +x gradle-init.sh`
# 3. Initialise the project: `$ ./gradle-init.sh YOUR_PROJECT_NAME`
@bahmanm
bahmanm / shapeofthedate.groovy
Last active November 17, 2017 20:58
Convert dates to alien looking plots using partial sums - https://github.com/bahmanm/datedreamer
//
// This has evolved into a fully-fledged project called DateDreamer.
// Please check the project's page for releases and more information.
// https://github.com/bahmanm/datedreamer
//
@Grab(group='com.github.yannrichet', module='JMathPlot', version='1.0.1')
@Grab(group='org.apache.commons', module='commons-math3', version='3.6.1')
import static java.lang.Math.*
import org.apache.commons.math3.complex.Complex
@bahmanm
bahmanm / list-group-by.ml
Created November 20, 2015 17:40
OCaml `List.group_by`
let group_by (f : 'a -> 'b) (ll : 'a list) : ('b, 'a list) Hashtbl.t =
List.fold_left
(fun acc e ->
let grp = f e in
let grp_mems = try Hashtbl.find acc grp with Not_found -> [] in
Hashtbl.replace acc grp (e :: grp_mems);
acc)
(Hashtbl.create 100)
ll;;
/**
* @author Bahman Movaqar <Bahman AT BahmanM.com>
*/
@Grab('org.jsoup:jsoup:1.8.2')
import static org.jsoup.Jsoup.parse
def cookieManager = new CookieManager(null, CookiePolicy.ACCEPT_ALL)
CookieHandler.setDefault(cookieManager)
def doc = parse(
new URL('https://www.packtpub.com/packt/offers/free-learning').text
#lang racket
;;;
;;; Author: Bahman Movaqar <Bahman AT BahmanM.com>
;;;
(require net/url)
(require sxml)
(require net/uri-codec)
(require net/http-client)
(require (planet neil/html-parsing))
(require net/cookies)
@bahmanm
bahmanm / lazy-list-combinations.scm
Created January 4, 2015 14:25
Computes the combinations of any number of given lists as a lazy sequence.
; Copyright Bahman Movaqar <Bahman AT BahmanM.com>
; Source -> https://github.com/bahmanm/touka/blob/master/misc.scm
; Tests -> https://github.com/bahmanm/touka/blob/master/tests/misc-tests.scm
;; Collects the CAR of each list in the given list of lists!
(define (cars list-of-lists)
(map car list-of-lists))
;; Collects the CDR of each list in the given list of lists!
(define (cdrs list-of-lists)
@bahmanm
bahmanm / test-runner.el
Created December 10, 2014 23:53
Simple Maven + JUnit test runner for Emacs.
;;; A quick way to run JUnit tests:
;;; `C-x t u` runs all the test cases in a unit.
;;; `C-x t c` runs a single test case.
;;;
;;; Simply add the snippet at the end of `init.el` or `.emacs`.
;;; NOTE: It assumes you are using projectile to manage the project.
;;;
;;; By Bahman Movaqar
;; runs all test cases in the current class
@bahmanm
bahmanm / simple-constraint-problem.groovy
Last active August 29, 2015 14:10
Solve the constraint equation: A + B = CD - E = FG
/*
* Solve the equation A + B = CD - E = FG
* WHERE A..G in [0,1,2,3,7,8,9]
* AND CD = 10*C + D
* AND FG = 10*F + G
* AND C not 0 and F not 0
* AND different letters are different digits
*/
[0,1,2,3,7,8,9].permutations().findAll {