Skip to content

Instantly share code, notes, and snippets.

View mfaani's full-sized avatar

Mohammad Faani mfaani

View GitHub Profile
@mfaani
mfaani / longest-common-subsequence-memoization.swift
Created December 3, 2023 02:06
Longest Common Subsequence using Memoization
/// start from m * n. Use RECURSION. End at 0 * 0
/// out of bounds could be the top and left edges.
func lcs(_ t1: [Character], _ t2: [Character]) -> Int {
var cache: [Stage: Int] = [:]
func helper(_ s: Stage) -> Int {
if let cached = cache[s] {
return cached
}
@mfaani
mfaani / longest-common-subsequence-tabulation.swift
Created December 3, 2023 02:02
Longest Common Subsequence using Tabulation
func lcs(_ t1: [Character], _ t2: [Character]) -> Int {
// 1. build and default grid to 0
let row = Array(repeating: 0, count: t2.count)
var grid = Array(repeating: row, count: t1.count)
func lcs(_ s: Stage) -> Int {
// 3. Exit with a 0 for any point that's beyond the left or bottom edges
guard s.s1 >= 0 && s.s2 >= 0 else {
return 0
}
if t1[s.s1] == t2[s.s2] {
@mfaani
mfaani / BinaryTree.swift
Last active November 23, 2023 15:47
Binary Tree
// Code inside modules can be shared between pages and other source files.
public class BinaryNode {
public var val: Int
public var left: BinaryNode?
public var right: BinaryNode?
public init() { self.val = 0
self.left = nil
self.right = nil
}
@mfaani
mfaani / README.md
Created July 6, 2023 20:18 — forked from IsaacXen/README.md
(Almost) Every WWDC videos download links for aria2c.
@mfaani
mfaani / how-to-modify-your-git-config-based-on-directory.md
Last active June 8, 2023 22:42
How to modify your git config based on directory - gist

There are some nuances. Took me a bit to piece it all together.

  1. Just add an if condition at the end of your existing global .gitconfig at your root directory.
[includeIf "gitdir:~/something/personal/"]
  path = .gitconfig-personal
[includeIf "gitdir:~/elsewhere/work/"]
  path = .gitconfig-work
@mfaani
mfaani / bash.md
Created April 25, 2023 20:31
Useful bash commands

Find all file names that start with 'App'

find path/to/folder -name "App*"

Show the next 3 lines (trailing context) after a match

cat Foo.swift | grep -A 3 methodA
@mfaani
mfaani / NSURLError AND CFNetworkErrors.h
Created February 15, 2023 18:44
NSURL Error + iOS Network Error codes
/*
ATTENTION: I've added two files here.
Steps to find this yourself.
1. Xcode >> Find >> New Scope >> Set the 'Search the following locations:' to SDK; Then set the other dropdown to 'iOS <whateverVersion>'
2. Then search for the error code number.
*/
@mfaani
mfaani / codeabe.swift
Last active December 19, 2022 15:42
A quick example of codeable based off of a Hackingwithswift tutorial
// https://www.hackingwithswift.com/articles/119/codable-cheat-sheet
import Foundation
struct Packet: Decodable {
var value: Int
var array: [Packet]?
}
enum Lett {
indirect case a(m: M)
@mfaani
mfaani / stdin_vs_stdout.md
Last active September 16, 2022 18:20
stdin vs stdout

Great video on stdin vs stdout: https://www.youtube.com/watch?v=OsErpB0-mWY

stdin

As a standard your input usually comes from the keyboard. Ex cat file.txt. <- here you're passing file.txt as a parameter.

However you can do cat < $file_name i.e. make the input to the cat command a variable.

Both cat file.txt & cat < file.txt achieve the same, but through different mechanics. < is passing something as an input.

I suppose it's because the cat command has abilities to handle file names as arguments and through stdin

@mfaani
mfaani / learning.md
Created May 15, 2021 23:08
Gatsby learning
  1. Learned how to search for files in VSC. Need to use cmmd+P
  2. The config.js is king
  3. For the config.js stuff to come to an affect, you need to do gatsby develop again.
  4. gatsby build doesn't work locally. Not sure what it does. ?????
  5. The location of media assets are under the static/media not sure why it's in there. For more see https://www.gatsbyjs.com/docs/how-to/images-and-media/static-folder/