Skip to content

Instantly share code, notes, and snippets.

View amakukha's full-sized avatar

Andriy Makukha amakukha

  • Toronto
View GitHub Profile
Weights←{
⍝ 2020 APL Problem Solving Competition Phase II
⍝ Problem 9, Task 1 - Weights
⍝ 1) Read the diagram of a mobile from the file as a vector of lines (M).
⍝ 2) Find lines which exactly repeat the preceding lines and contain only
⍝ vertical bars (│) and spaces. Such lines don't bring any useful
⍝ information. (This filtering step allows to process files which are
⍝ very deep without running out of memory. For example, 10K characters
⍝ wide, 100K lines deep. Without filtering, such a file would be
@amakukha
amakukha / djb2_32.html
Last active July 27, 2021 13:03
DJB2 hash in JavaScript (32-bit version)
<html>
<body>
<h2>32-bit DJB2 hash in JavaScript demo</h2>
<input type="file" id="file-input" />
<h3 id="result">Select file to calculate DJB2 hash</h3>
</body>
<script>
// DJB2 hash function. Takes ArrayBuffer
function hash_buf_djb2_32(buf) {
@amakukha
amakukha / fast_strlcpy.c
Created December 17, 2021 08:29
fast_strlcpy
/* Copyright (c) 1998, 2015 Todd C. Miller <[email protected]>
* (c) 2021 Andrii Makukha
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
@amakukha
amakukha / code_duplication.py
Created December 29, 2022 19:51
code_duplication.py
#!/usr/bin/env python3
'''
Code duplication assessment tool. Runs in linear time.
Usage:
Put your packages into a single directory and run this script:
python3 code_duplication.py > report.txt
Then sort files by similarity:
cat report.txt | awk 'NF > 1' | sort -rn | less
'''
@amakukha
amakukha / generate_random_words.py
Created February 21, 2023 01:27
Generate unique random strings or identifiers
#!/usr/bin/env python3
'''Generate unique random strings or identifiers'''
import random, sys
# How many new unique identifiers to generate?
NUMBER = 100 if len(sys.argv) <= 1 else int(sys.argv[1])
# How many words to combine into a new generated string?
LENGTH = 3 if len(sys.argv) <= 2 else int(sys.argv[2])