Compare commits
No commits in common. "master" and "1402-daily-problem" have entirely different histories.
master
...
1402-daily
@ -1,14 +0,0 @@
|
|||||||
# Audio
|
|
||||||
|
|
||||||
Compile the program with
|
|
||||||
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gcc -lm waves.c
|
|
||||||
```
|
|
||||||
|
|
||||||
Execute and hear the output with
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./a.out | aplay
|
|
||||||
```
|
|
@ -1,67 +0,0 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Tyler Perkins
|
|
||||||
// 12-30-20
|
|
||||||
// Testing command line audio
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
int main(int argc, char** argv){
|
|
||||||
if(argc != 1){
|
|
||||||
printf("Usage: %s\n", argv[0]);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//sawtooth wave
|
|
||||||
for(int t=0, osc=0; t<8000; t++, osc += 14){
|
|
||||||
putchar(osc);
|
|
||||||
}
|
|
||||||
|
|
||||||
//square wave
|
|
||||||
for(int t=0, osc=0; t<8000; t++, osc += 14){
|
|
||||||
putchar(osc & 0x80);
|
|
||||||
}
|
|
||||||
|
|
||||||
//sine wave
|
|
||||||
for(int t=0, osc=0; t<8000; t++, osc += 14){
|
|
||||||
putchar(127 * sin(osc/255.0*2*3.1415) + 128);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* kinda bass guitar?
|
|
||||||
*
|
|
||||||
* The idea here is an array full of random data, with
|
|
||||||
* an array size equal to the period of the wave
|
|
||||||
* (for 440 its ~18) then loop the array.
|
|
||||||
* Then we average out the current value and next one
|
|
||||||
* Till we get a faded noise to silence
|
|
||||||
*
|
|
||||||
* Pretty cool ngl
|
|
||||||
*/
|
|
||||||
|
|
||||||
unsigned char a[18];
|
|
||||||
|
|
||||||
//init the array with random data
|
|
||||||
FILE *fp;
|
|
||||||
fp = fopen("/dev/random", "r");
|
|
||||||
if(fp == NULL){
|
|
||||||
printf("Couldnt open random stream!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(fgets(a,sizeof(a),fp)==NULL){
|
|
||||||
printf("Failed to read the random stream!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
fclose(fp);
|
|
||||||
|
|
||||||
//play the bass guitar
|
|
||||||
for(int t=0;t<8000;t++){
|
|
||||||
int i = t % sizeof(a);
|
|
||||||
int j = (t+1) % sizeof(a);
|
|
||||||
putchar(a[i] = (a[i] + a[j])/2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
1
math-problems/see-it-generator/.gitignore
vendored
1
math-problems/see-it-generator/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
output.csv
|
|
@ -1,18 +0,0 @@
|
|||||||
# See-it Generator
|
|
||||||
|
|
||||||
The See it sequence is exactly as the name implies, what you see is the next entry in the sequence. For example,
|
|
||||||
|
|
||||||
$$
|
|
||||||
1
|
|
||||||
11
|
|
||||||
21
|
|
||||||
1211
|
|
||||||
111221
|
|
||||||
312211
|
|
||||||
13112221
|
|
||||||
1113213211
|
|
||||||
$$
|
|
||||||
|
|
||||||
I learned about this sequence from [Genius at Play](https://www.amazon.com/Genius-At-Play-Curious-Horton/dp/1620405938).
|
|
||||||
|
|
||||||
This code just generates this sequence.
|
|
@ -1,61 +0,0 @@
|
|||||||
import pandas as pd
|
|
||||||
import time
|
|
||||||
|
|
||||||
def main():
|
|
||||||
"""
|
|
||||||
Print out a sequence following the see-it sequence
|
|
||||||
"""
|
|
||||||
|
|
||||||
upper_bound = 100
|
|
||||||
seed = "1"
|
|
||||||
file_location = "output.csv"
|
|
||||||
|
|
||||||
df = pd.DataFrame(columns=["Iteration", "Length", "Value"])
|
|
||||||
|
|
||||||
val = seed
|
|
||||||
|
|
||||||
for i in range(0,upper_bound):
|
|
||||||
#print(f"Iteration : {i}")
|
|
||||||
#print(f"Length : {len(val)}")
|
|
||||||
#print(val)
|
|
||||||
df.loc[len(df)] = [i, len(val), val]
|
|
||||||
start_time = time.time()
|
|
||||||
val = next_step(val)
|
|
||||||
elasped_time = time.time() - start_time
|
|
||||||
print(f"Iteration : {i} of {upper_bound} (took {elasped_time:.4f} seconds)")
|
|
||||||
df.to_csv(file_location, index=False)
|
|
||||||
print("Progress saved to file")
|
|
||||||
print("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=")
|
|
||||||
|
|
||||||
print("Result logged to {file_location.csv}")
|
|
||||||
|
|
||||||
|
|
||||||
def next_step(sequence: str) -> str:
|
|
||||||
last_char = None
|
|
||||||
last_char_count = 0
|
|
||||||
|
|
||||||
ret = ""
|
|
||||||
|
|
||||||
for char in sequence:
|
|
||||||
if last_char == None:
|
|
||||||
last_char = char
|
|
||||||
last_char_count = 1
|
|
||||||
elif char == last_char:
|
|
||||||
last_char_count += 1
|
|
||||||
else:
|
|
||||||
ret += str(last_char_count)
|
|
||||||
ret += str(last_char)
|
|
||||||
last_char_count = 1
|
|
||||||
last_char = char
|
|
||||||
|
|
||||||
if ret != None:
|
|
||||||
ret += str(last_char_count)
|
|
||||||
ret += str(last_char)
|
|
||||||
|
|
||||||
|
|
||||||
return ret
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
Loading…
Reference in New Issue
Block a user