Skip to content

Instantly share code, notes, and snippets.

@minghao912
Last active October 9, 2022 02:55
Show Gist options
  • Save minghao912/d2dc5933222b760f880e5276fd582fb1 to your computer and use it in GitHub Desktop.
Save minghao912/d2dc5933222b760f880e5276fd582fb1 to your computer and use it in GitHub Desktop.
Math 170E HW 2 Question 6
/**
* First, compile the program using clang or gcc
* Then, run the program using: ./hw2_better <value of N> <number of runs> <print? T/F=1/0>
* Output is in the file 'out.data', with each run on its own line
* ---
* Example run: ./hw2_better 20 1 1 will run the program once with N=20, printing out the
* contents of the handshake array (how many times each pair of students shook hands)
*
* Example output:
* 0 1 2 3 4
* ------------------------------
* 0 1 4 5 6
* 1 4 5 5
* 2 5 5
* 3 7
*
* It took 47 handshakes for all students to shake hands.
* Students 3 and 4 shook hands the most times, at 7 handshakes.
**/
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#define DEFAULT_N 20
#define DEFAULT_RUNS 100
int allShookHands(unsigned int** const handshakeArray, int classSize) {
for(unsigned int i = 0; i < classSize - 1; i++) {
for(unsigned int j = i + 1; j < classSize; j++) {
if (handshakeArray[i][j] == 0)
return 0;
}
}
return 1;
}
long long run(int n, int print) {
// Data structures
long long numHandshakes = 0;
unsigned int** handshakeArray = (unsigned int**) calloc(n - 1, sizeof(unsigned int*));
for (unsigned int i = 0; i < n - 1; i++) {
handshakeArray[i] = (unsigned int*) calloc(n, sizeof(unsigned int));
}
while(!allShookHands(handshakeArray, n)) {
// Random pair of students
int studentA = 0, studentB = 0;
while(studentA == studentB) { // Should not shake hands with self
studentA = rand() % n;
studentB = rand() % n;
}
// Ensure studentB > studentA
if (studentB < studentA) {
int temp = studentA;
studentA = studentB;
studentB = temp;
}
// Record handshakes
handshakeArray[studentA][studentB] += 1;
// Increase hadnshake count
numHandshakes++;
}
// Print
if (print) {
// Table header
printf("\t");
for (unsigned int i = 0; i < n; i++) {
printf("%6d", i);
}
printf("\n\t");
for (unsigned int i = 0; i < (6 * n); i++) {
printf("-");
}
printf("\n");
// Table contents
unsigned int maxHandshakes = 0;
unsigned int maxPair[2] = {0};
for (unsigned int i = 0; i < n - 1; i++) {
printf("%d\t", i);
for (unsigned int j = 0; j < n; j++) {
if (j <= i) {
printf("%s", " ");
continue;
}
printf("%6d", handshakeArray[i][j]);
// Set max
if (handshakeArray[i][j] > maxHandshakes) {
maxHandshakes = handshakeArray[i][j];
maxPair[0] = i;
maxPair[1] = j;
}
}
printf("\n");
}
// Summary
printf("\n");
printf("It took %lld handshakes for all students to shake hands.\n", numHandshakes);
printf("Students %d and %d shook hands the most times, at %d handshakes.\n", maxPair[0], maxPair[1], maxHandshakes);
}
// Ending stuff
for (int i = 0; i < n - 1; i++) {
free(handshakeArray[i]);
}
free(handshakeArray);
return numHandshakes;
}
int main(int argc, char** argv) {
// Initialize random function
srand(time(NULL));
// Take in CLI args
// First: # for N
// Second: # of runs
// Third: print handshake array? T/F
int n = DEFAULT_N;
int runs = DEFAULT_RUNS;
int print = 0;
if (argc >= 3) {
sscanf(argv[1], "%d", &n);
sscanf(argv[2], "%d", &runs);
}
if (argc == 4) {
sscanf(argv[3], "%d", &print);
}
// Store results
long long* results = (long long*) calloc(runs, sizeof(long long));
for (int i = 0; i < runs; i++) {
results[i] = run(n, print);
}
// Write results
FILE *f = fopen("out.data", "wb");
for (int i = 0; i < runs; i++) {
fprintf(f, "%lld\n", results[i]);
}
fclose(f);
// Ending stuff
free(results);
return 0;
}
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#define N 20
#define RUNS 100
int allShookHands(const int handshakeArray[N][N], int classSize) {
for(int i = 0; i < classSize; i++) {
for(int j = 0; j < classSize; j++) {
if (handshakeArray[i][j] == 0)
return 0;
}
}
return 1;
}
long long run() {
// Data structures
long long numHandshakes = 0;
int handshakeArray[N][N] = {0};
while(!allShookHands(handshakeArray, N)) {
// Random pair of students
int studentA = rand() % N;
int studentB = rand() % N;
// Record handshakes
handshakeArray[studentA][studentB] = 1;
// Increase hadnshake count
numHandshakes++;
}
return numHandshakes;
}
void main(int argc, int** argv) {
// Initialize random function
srand(time(NULL));
// Store results
long long results[RUNS] = {0};
for (int i = 0; i < RUNS; i++) {
results[i] = run();
}
// Write results
FILE *f = fopen("out.data", "wb");
for (int i = 0; i < RUNS; i++) {
fprintf(f, "%lld\n", results[i]);
}
fclose(f);
}
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"data2 = np.loadtxt(\"2.data\", delimiter=\"\\n\")\n",
"data4 = np.loadtxt(\"4.data\", delimiter=\"\\n\")\n",
"data10 = np.loadtxt(\"10.data\", delimiter=\"\\n\")\n",
"data20 = np.loadtxt(\"20.data\", delimiter=\"\\n\")\n",
"\n",
"all_data = [data2, data4, data10, data20]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.boxplot(all_data)\n",
"plt.xticks([1,2,3,4], ['2', '4', '10', '20'])\n",
"plt.xlabel(\"Class size (n)\")\n",
"plt.ylabel(\"Number of handshakes\")\n",
"plt.yscale(\"log\")"
]
}
],
"metadata": {
"interpreter": {
"hash": "b89b5cfaba6639976dc87ff2fec6d58faec662063367e2c229c520fe71072417"
},
"kernelspec": {
"display_name": "Python 3.10.0 64-bit",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.0"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment