Skip to content

Instantly share code, notes, and snippets.

@devrkd
devrkd / solution.ts
Created June 17, 2021 16:49
How to maximize stock profits, dynamic programming question
/**
* Problem Statement:
* Say you have an array for which the ith element is the price of a given stock on day i.
* If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.
* Note that you cannot sell a stock before you buy one.
* Example 1:
* Input: [7,1,5,3,6,4]
* Output: 5
* Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6). Profit = 6–1 = 5. Not 7–1 = 6, as selling price needs to be larger than buying price.
* Example 2:
@devrkd
devrkd / ObserverPattern.ts
Created June 12, 2021 09:36
Observer Pattern example in Typescript
interface Observable {
subscribe(observer: Observer): void;
unsubscribe(observer: Observer): void;
notify(): void;
}
interface Observer {
update(subject: Subject);
}
@devrkd
devrkd / sample.ts
Created June 12, 2021 09:33
Sample subs and unsubs code
const score = new Score();
const display = new DisplayScore();
const cli = new CliScore();
score.subscribe(display);
score.subscribe(cli);
score.updateScore(4);
@devrkd
devrkd / SampleObsevers.ts
Created June 12, 2021 09:27
Sample Observer in typescript
class DisplayScore implements Observer {
update(subject: Score) {
console.log('Display score: ' + subject.getScore());
}
}
class CliScore implements Observer {
update(subject: Score) {
console.log('CLI score: ' + subject.getScore());
@devrkd
devrkd / Score.ts
Created June 12, 2021 09:23
Example Observable class in typescript
class Score extends Subject {
private score: number;
public updateScore(score: number)
{
this.score = score;
console.log('got new score.....');
this.notify();
}
@devrkd
devrkd / Subject.ts
Created June 12, 2021 09:21
Subject in Typescript
class Subject implements Observable {
private observers: Observer[] = [];
subscribe(observer: Observer) {
this.observers.push(observer);
}
unsubscribe(observer: Observer) {
this.observers = this.observers.filter((o) => {
return o !== observer
})
console.log('observer detached...' + observer.constructor.name);
@devrkd
devrkd / Observer.ts
Created June 12, 2021 08:59
Observer in typescript
interface Observer {
update(subject: Subject);
}
@devrkd
devrkd / Observable.ts
Created June 12, 2021 08:54
Subject Interface
interface Observable {
subscribe(observer: Observer): void;
unsubscribe(observer: Observer): void;
notify(): void;
}
@devrkd
devrkd / addressSplitter.php
Created June 1, 2021 08:05
Split house number and extra info from street name using Laravel Str macro
<?php
Str::macro('addressSplitter', function (string $address) {
$leadingHouseNumber = '/^([\d-]+[a-z]{0,1}[\d-]?[\d,]?)\ ([a-z\ ]+)$/mi';
$endingWithHouseNumber = '/^([a-z\ ]+)([\d?]+)([\D+?]+[\d+?]?.+)?|([\D+?]+[\d+?]?+)$/mi';
if (preg_match_all($leadingHouseNumber, $address, $matches, PREG_SET_ORDER, 0)
&& isset($matches[0][1], $matches[0][2])
) {
$result['house_number'] = (int) $matches[0][1];
@devrkd
devrkd / wherehas-example.php
Last active July 24, 2019 05:30
Laravel example code with wherehas
<?php
/*
* example code gist,
*/
Model_A::whereHas('Model_B',
function (\Illuminate\Database\Eloquent\Builder $builder) {
$builder->upcoming()->where('cancel_reason', Model_B::REASON_NOT_AVAILABLE);
})->active();