Skip to content

Instantly share code, notes, and snippets.

View timrprobocom's full-sized avatar

Tim Roberts timrprobocom

  • Providenza & Boekelheide
  • Tigard, Oregon
View GitHub Profile
@timrprobocom
timrprobocom / untangle.py
Created August 19, 2023 00:27
Untangle improperly sorted columns
lines = """\
ABCDE12345_001,FGHIJ6789_002,ABCDE12345_001
KLMNO5432_003,KLMNO5432_003,FGHIJ6789_002
PQRST24680_123,UVWXY13579_555,UVWXY13579_555
ZABCD876530_009,ZABCD876530_009,AABBCCDDEE_987
AABBCCDDEE_987,AABBCCDDEE_987,LMNOP98765_999
LMNOP98765_999,ZYXWV54321_777,ZYXWV54321_777""".splitlines()
record = []
for row in lines:
import numpy as np
from datetime import datetime
# Define the component prices for each day
prices = {
datetime(2020, 1, 31): [197.2525, 253.2126, 653.266, 653.2678],
datetime(2020, 2, 3): [197.063, 253.2231, 652.3695, 652.3759],
datetime(2020, 2, 4): [196.6896, 252.9168, 649.9793, 649.9858],
datetime(2020, 2, 5): [197.3429, 252.8294, 653.5655, 653.5588],
datetime(2020, 2, 6): [197.4554, 252.7901, 652.3171, 652.3172],
@timrprobocom
timrprobocom / waterflow.py
Created December 18, 2022 06:38
Checking for water flow through a block
def physics(data):
block = [[int(i) for i in row.split(',')] for row in data.split(';')]
width = len(block[0])
height = len(block)
water = block[0].index(1)
for row in range(1,height):
for possible in (-1,0,1):
if water+possible in range(width) and block[row][water+possible]:
water += possible
"""
This does what you are trying to do, but with all the extraneous code eliminated.
Notice that strings are iterables, just like lists. Any time you are making a list
of single characters, you should probably use a string. Also notice that we write
`'xxx'.upper()`, not `str.upper('xxx')`. Also note that it is silly to write `
if result='N': pass`. Just test for what you want to know.
"""
import random
lower_case_letters = 'abcdefghijklmnopqrstuvwxyz'
import struct
# Return a RIFF file
class LIST:
def __init__(self, name, f):
# contains a type and a list of subchunks.
self.offset = f.tell() - 4
self.name = name.decode()
size = struct.unpack('I', f.read(4))[0]
@timrprobocom
timrprobocom / dbtest.py
Created March 10, 2022 05:27
Sample Database Benchmark
# OK, I ran the following Python to create the database:
import sqlite3
import random
import os
os.remove( 'test.db' )
db = sqlite3.connect( "test.db" )
cursor = db.cursor()
cursor.execute( """\
@timrprobocom
timrprobocom / boxletter.py
Created February 25, 2022 23:27
How to draw text in boxes
from PIL import ImageDraw, Image, ImageFont
BLACK = (0,0,0)
WHITE = (255,255,255)
LTBLUE = (192,192,255)
fig = Image.new( "RGB", (320,320), WHITE )
arial = ImageFont.truetype("../.fonts/arial.ttf", 32 )
y = 100
// I seriously doubt this is your actual data structure.
const data = [
[name = 'john doe', name2 = 'hello'],
[age = 23],
[hobby = [{
name: 'mancing'
}]]
];
data.map((item, key) => console.log(item, key))
import re
data = [
'atr.i',
'atr i',
'ok',
'test',
'ro bn.',
'ro bn',
'talk 1',
import math
def polar_add( v1, v2 ):
dtheta = v2[1]-v1[1]
r = math.sqrt( v1[0]**2 + v2[0]**2 + 2*v1[0]*v2[0]* math.cos(dtheta) )
theta = v1[1] + math.atan2(
v2[1] * math.sin(dtheta),
v1[1] + v2[1]*math.cos(dtheta)
)
return (r, theta )