Skip to content

Instantly share code, notes, and snippets.

View knowsudhanshu's full-sized avatar

Sudhanshu knowsudhanshu

  • New Delhi
View GitHub Profile
@knowsudhanshu
knowsudhanshu / gist:b9d3e620e0d7d672980ca3a101e4f2fd
Created May 3, 2024 03:37
Number of ways to score total N when a player can score either of 3,5,10
func waysToScore(n: Int) -> Int {
var arr: [Int] = [Int](repeating: 0, count: n + 1)
arr[0] = 1
for index in 1...n {
// print("index: \(index)")
if index - 3 >= 0 {
// print("index - 3 > 0 ----Start--------")
// print("\(arr[index])")
// print("\(arr[index - 3])")
let input = [
[1,3,5,8],
[4,2,1,7],
[4,3,2,3]
]
/*
// Recursion
func maxPathCost(input: [[Int]], m: Int, n: Int) -> Int {
if m == 0 && n == 0 {
let input = [
[1,3,5,8],
[4,2,1,7],
[4,3,2,3]
]
func minPathCost(input: [[Int]], m: Int, n: Int) -> Int {
if m == 0 && n == 0 {
return input[0][0]
}
@knowsudhanshu
knowsudhanshu / The Celebrity Problem
Created April 4, 2024 14:56
In a party of N people, only one person known to everyone but doesn't know anyone. Such a person is called celebrity.
func getCelebrity(input: [[Int]]) -> Int {
// Add person to stack
var stack: [Int] = []
for i in 0..<input.count {
stack.append(i)
}
// pick a person and check with others
while stack.count > 1 {
infix operator !!
func !!<T>(lhs: T?, rhs: T) -> T {
guard let lhs = lhs else {
return rhs
}
return lhs
}
var someVar: String? = "has value"
print(someVar !! "no value")
@knowsudhanshu
knowsudhanshu / BiometricIDHandler.swift
Last active December 1, 2021 17:54
TouchID and FaceID integration
struct BiometricIDHandler {
static func authenticateWithBiometrics() {
let laContext = LAContext()
var error: NSError?
if laContext.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,
error: &error) {
@knowsudhanshu
knowsudhanshu / Wikifiable.swift
Last active September 27, 2021 03:27
Wikifiable: enables getting rid of the boilerplate code in an escaping closure where there is a repeated code [weak self] ( Credit: Vincent Pradeilles)
protocol Weakifiable where Self: class {}
extension NSObject: Weakifiable {}
extension Weakifiable {
func weakify<T>(_ code: @escaping (Self, T) -> Void) -> (T) -> Void {
{
[weak self] (data) in
guard let self = self else { return }
func literalExpressionExample() {
/// #file : String, it represents the path to the file
/// #function : String, name (with signature) of the function
/// #line : Int, line number on which it appears
print(#file + " : " #function + " : " + " : " + \(#line))
}
protocol A {
var someVar: String { get set }
func someFunc()
}
protocol B {
var someVar: String { get set }
func someFunc()
}
struct C: A, B {
@_implements(A, someVar)
extension Sequence {
func myFilter(_ operation: (_ val: Element) -> Bool) -> [Element] {
var output: [Element] = []
for item in self {
if operation(item) {
output.append(item)
}
}
return output