Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- int nutty_votes[10*10] =
- {
- 5,4,5,5,4,3,4,5,3,4,
- 3,4,5,5,4,5,4,4,3,3,
- 4,3,3,3,5,4,5,5,4,4,
- 5,3,3,4,4,5,3,4,5,5,
- 4,4,4,4,4,4,4,4,4,4,
- 5,4,3,3,4,5,5,3,5,4,
- 4,3,4,4,5,5,5,3,4,4,
- 4,5,5,4,3,3,4,3,5,5,
- 4,4,5,4,4,5,3,5,3,3,
- 3,4,4,4,4,4,4,4,4,4,
- };
- int better_votes[10*10] =
- {
- 1,2,3,4,5,6,7,8,9,10,
- 8,10,4,2,3,5,7,6,9,1,
- 4,1,2,3,7,6,9,8,5,10,
- 10,9,8,7,6,5,4,3,2,1,
- 9,2,8,3,7,4,6,5,10,1,
- 1,9,8,7,6,5,2,3,10,4,
- 5,4,3,2,1,6,7,8,9,10,
- 5,3,4,2,6,1,9,8,10,7,
- 1,4,7,10,2,5,8,9,3,6,
- 8,6,7,5,3,10,9,2,1,4,
- };
- void generate_irrationals(double *destination, int count)
- {
- int i;
- int skips = 0;
- double x;
- for (i = 0; i - skips < count; i++) {
- x = sqrt(i);
- if (floor(x) == x) {
- skips++;
- continue;
- }
- destination[i - skips] = x;
- }
- }
- void print_table_of_doubles_and_squares(const char *header, double *ptr, int length)
- {
- int i;
- printf("%s:\n", header);
- for (i = 0; i < length; i++) {
- printf("\t%g, ^2 = %g\n", ptr[i], ptr[i] * ptr[i]);
- }
- printf("\n");
- }
- void test_vote(int *vote, double *irrationals)
- {
- int i, j;
- int sum[10];
- double irr_sum[10];
- for (i = 0; i < 10; i++) {
- printf("item %i: ", i + 1);
- for (int j = 0; j < 10; j++) {
- const int linear_score = vote[i*10 + j];
- printf("%i,", linear_score);
- }
- printf("\n");
- }
- printf("\n");
- printf("linear sums: ");
- for (i = 0; i < 10; i++) {
- sum[i] = 0;
- for (j = 0; j < 10; j++) {
- // sum up "points"
- sum[i] += vote[i*10 + j];
- }
- printf("%i,", sum[i]);
- }
- printf("\n\n");
- printf("irrational sums:\n");
- for (i = 0; i < 10; i++) {
- irr_sum[i] = 0.0;
- for (j = 0; j < 10; j++) {
- // sum up "points"
- irr_sum[i] += irrationals[vote[i*10 + j] - 1];
- }
- printf("\tlin %g, squared %g\n", irr_sum[i], irr_sum[i] * irr_sum[i]);
- }
- printf("\n");
- }
- void test_vote_better(int *vote, double *irrationals)
- {
- int i, j;
- int sum[10];
- double irr_sum[10];
- // clear tables
- for (int i = 0; i < 10; i++) {
- sum[i] = 0;
- }
- for (i = 0; i < 10; i++) {
- irr_sum[i] = 0.0;
- }
- for (i = 0; i < 10; i++) {
- printf("item %i: ", i + 1);
- for (j = 0; j < 10; j++) {
- printf("%i,", vote[i*10 + j]);
- }
- printf("\n");
- }
- printf("\n");
- printf("linear sums: ");
- for (i = 0; i < 10; i++) {
- for (j = 0; j < 10; j++) {
- // the value in the table is the target of the vote, not the score
- // the score is determined by the position in the list
- // best score = N (10)
- // worst score = 1
- sum[vote[i*10 + j] - 1] += 10 - i;
- }
- printf("%i,", sum[i]);
- }
- printf("\n\n");
- printf("irrational sums:\n");
- for (int i = 0; i < 10; i++) {
- for (int j = 0; j < 10; j++) {
- // the value in the table is the target of the vote, not the score
- // the score is determined by the position in the list
- // best score = N (10)
- // worst score = 1
- irr_sum[vote[i*10 + j] - 1] += irrationals[10 - i - 1];
- }
- printf("\tlin %g, squared %g\n", irr_sum[i], irr_sum[i] * irr_sum[i]);
- }
- printf("\n");
- }
- int main(int argc, char **argv)
- {
- double irrationals[10];
- generate_irrationals(irrationals, 10);
- print_table_of_doubles_and_squares("irrational score values", irrationals, 10);
- printf("nutty votes:\n");
- test_vote(nutty_votes, irrationals);
- printf("\n");
- printf("better votes:\n");
- test_vote_better(better_votes, irrationals);
- printf("\n");
- return 0;
- }
Add Comment
Please, Sign In to add comment