Skip to content

Instantly share code, notes, and snippets.

View Tombarr's full-sized avatar
:octocat:
Coding

Tom Barrasso Tombarr

:octocat:
Coding
View GitHub Profile
@Tombarr
Tombarr / argument_reassignment.exs
Created January 8, 2019 02:14
Argument reassignment doesn't work in Elixir
defmodule Greeting do
def hey(name) do
name = name || "Tom"
IO.puts "Hey, " <> name
end
end
test_name = nil
Greeting.hey(test_name) # Hello, Tom
test_name # nil
@Tombarr
Tombarr / argument_reassignment.js
Created January 8, 2019 02:10
Don't reassign your function arguments
const hey = (person) => {
person.name = person.name || "Tom";
console.log(`Hey, ${person.name}`);
};
let bob = {};
hey(bob); // "Hey, Tom"
bob // { name: "Tom" }
@Tombarr
Tombarr / pattern_matching.exs
Created January 8, 2019 01:57
Basic Elixir pattern matching
# is it assignment?
all_systems = :go
# not quite
:go = all_systems
# alas age is but a number
tom = %{name: "Tom", age: 25}
%{age: num} = tom # 25
@Tombarr
Tombarr / no_pipe_operator.exs
Created January 8, 2019 01:34
Explicit function calling without pipe operator
Enum.join(Enum.reverse(String.split(String.upcase("war"), "")), "")
@Tombarr
Tombarr / pipe_operator_inline.exs
Created January 8, 2019 01:33
Inline pipe operator in Elixir
"war" |> String.upcase |> String.split("") |> Enum.reverse |> Enum.join("")
@Tombarr
Tombarr / pipe_operator.exs
Created January 8, 2019 01:31
Pipe operator in Elixir
"war"
|> String.upcase
|> String.split("")
|> Enum.reverse
|> Enum.join("")
@Tombarr
Tombarr / method_chaining.js
Created January 8, 2019 01:29
Javascript method chaining
"war".toUpperCase().split("").reverse().join("");
@Tombarr
Tombarr / LastWorkingDay.java
Last active September 11, 2018 14:30
TemporalAdjuster for adjusting a date to the last working business day
public static TemporalAdjuster LAST_WORKING_DAY = TemporalAdjusters.ofDateAdjuster(lastDayOfMonth -> {
int daysToSubtract = Math.max(0, lastDayOfMonth.getDayOfWeek().getValue() - DayOfWeek.FRIDAY.getValue());
return lastDayOfMonth.minusDays(daysToSubtract);
});
// Example Usage
LocalDate.now().with(LAST_WORKING_DAY);
@Tombarr
Tombarr / TrappedWaterFast.java
Last active August 8, 2018 00:56
Trapped Water Problem O(n)
import java.util.stream.*;
import java.util.Arrays;
// O(n) solution to the Trapped Water Problem
// @see https://techdevguide.withgoogle.com/paths/advanced/volume-of-water/
public class TrappedWater {
public static void main(String args[]) {
int[] sampleTopography = { 1,3,2,4,1,3,1,4,5,2,2,1,4,2,2 };
int trappedWaterVolume = getTrappedWater(sampleTopography);
@Tombarr
Tombarr / TrappedWater.java
Last active August 8, 2018 00:55
Trapped Water Algorithm
import java.util.stream.IntStream;
import java.util.Arrays;
// O(n^2) solution to the Trapped Water Problem
// @see https://techdevguide.withgoogle.com/paths/advanced/volume-of-water/
public class TrappedWater {
public static void main(String args[]) {
int[] sampleTopography = { 1,3,2,4,1,3,1,4,5,2,2,1,4,2,2 };
int trappedWaterVolume = getTrappedWater(sampleTopography);