Skip to content

Instantly share code, notes, and snippets.

@codeeval
Created October 3, 2011 02:13
Show Gist options
  • Save codeeval/1258294 to your computer and use it in GitHub Desktop.
Save codeeval/1258294 to your computer and use it in GitHub Desktop.
Sample code to read in test cases
# On CodeEval, test cases are read in from a file which is the first argument to your program
# Open the file and read in line by line. Each line represents a different test case
# (unless given different instructions in the challenge description)
import sys
test_cases = open(sys.argv[1], 'r')
for test in test_cases:
# ignore test if it is an empty line
# 'test' represents the test case, do something with it
# ...
# ...
test_cases.close()
@sparkchaser
Copy link

The C boilerplate isn't even compilable. Here's a version of it that can actually be used as a minimal application skeleton:

#include <stdio.h>

int main(int argc, char** argv)
{
   FILE*    fd;
   char     line[1024];

   fd = fopen(argv[1], "r");

   while (fgets(line, sizeof(line), fd))
   {
      /* Skip empty lines */
      if (line[0] == '\n')
         continue;

      /* Do something with the line */
      /* ... */
   }
   return 0;
}

Error checking is omitted for brevity's sake, which shouldn't be too terrible the code is only being run inside a controlled, well-defined environment.

@sjakobi
Copy link

sjakobi commented Jun 14, 2014

A simplified Go/Golang template:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func solve(s string) string {
    // Replace with actual solution code.
    return s
}

func main() {
    file, _ := os.Open(os.Args[1])
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        fmt.Println(solve(scanner.Text()))
    }
}

scanner.Scan loops over the lines of the file, scanner.Text returns the scanned line.

@soyeb84
Copy link

soyeb84 commented Jul 10, 2014

I am using following C# code (I was using the normal void main version but in the instructions it was mentioned that all functions should return 0 on exit. )

But it always throw unhandled Exception: System.UnauthorizedAccessException: access to path denied "/stdin.txt" error on submission.

         static int Main(string[] args)
        {

                     string filename =args[0]; //reading the name of file from the first argument
                     StreamReader sw = new StreamReader(new FileStream(filename, FileMode.Open));
                      string line; // will hold the currently read line
                     float weight = 0; //Maximum weight the package can hold.

                    while ((line = sw.ReadLine()) != null) //Iterates until there is no more line to read
                   {

                   }
                 return(0);
         }

@jotaki
Copy link

jotaki commented Aug 23, 2014

This isn't really what I use, but it works. Slightly obfuscated C code, because why not?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
 * rd_line: process one line at a time.
 * rd_all:  process entire file. (malloc()'d memory, careful.)
 */
#define rd rd_line
#define BUFSZ   1024
int eval(char*,int);
void rd_line(FILE *fp)
{char buf[BUFSZ];while((fgets(buf,sizeof(buf)-1,fp))){
if(buf[0]!='\n' && eval(buf,strlen(buf))){return;}}}
void rd_all(FILE *fp){char *buf;int sz, i=0;fseek(
fp,0L,SEEK_END);sz=ftell(fp);fseek(fp,0L,SEEK_SET);buf=
malloc(sz+1);if(!buf){return;}do{int z=fread(&buf[i],
sizeof(char), sz-i,fp);if(z<0){return;}i+=z;}while(i<sz);
buf[i]=0;eval(buf,sz);free(buf);buf=NULL;}int main(int ac,
char *av[]){FILE *fp;ac<2? exit(printf("invalid usage\n")):
(fp=fopen(av[1],"r"))?rd(fp),fclose(fp),exit(0):perror(av[1]),
exit(1);return(0);}int eval(char *buf, int len)
{
        /* code here */
        printf("%s", buf);
        return 0;
}

@ArupSen
Copy link

ArupSen commented Oct 3, 2014

Here's another javascript one. I like to the put all the details of the challenge at the top of my file in comments so that I don't have to refer back to the site. I usually chop up the line into an array but not always. I often work away from the computer and think through how I would solve it if I didn't have a computer rather than spend time browsing library functions.

When it comes to testing out helper functions or sub-problems I split a tmux window with vim running in one and node in the other. So far I've done all of them in javascript.

// challenge description
// sample input -
// sample output -

function coolFunction(input) {
    'use strict';
    var d = input.split(','), output = "";

    return output;
}

var fs  = require("fs");
fs.readFileSync(process.argv[2]).toString().split('\n').forEach(function (line) {
    if (line !== "") { // ignore empty lines
        console.log(coolFunction(line));
    }
});

@nickjones
Copy link

Another Go implementation. I can't remember where I found this:

package main

import (
    "io/ioutil"
    "strings"
    "flag"
)

func main() {
    flag.Parse();
    args := flag.Args()
    data, _ := ioutil.ReadFile(args[0])
    lines := strings.Split(string(data), "\n")
}

@PiDelport
Copy link

Here's a slightly more idiomatic Python version:

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('filename')
    args = parser.parse_args()

    with open(args.filename) as f:
        for line in f:
            ...

if __name__ == '__main__':
    main()

@facekunal
Copy link

how to read test cases in fibonnaci (easy)...can anyone give full soln. for reference.

@shtaimoortariq
Copy link

i have a problem i didnot get what these lines of code mean and how to write the c code in code eval how to use the input file????????????

/* Sample code to read in test cases:

include <stdio.h>

int main(int argc, const char * argv[]) {
FILE *file = fopen(argv[1], "r");
char line[1024];
while (fgets(line, 1024, file)) {
// Do something with the line
}
return 0;
} */

@iskenxan
Copy link

I keep getting an Error"Program binary.exe' does not contain a staticMain' method suitable for an entry point" although I haven't changed the given Main function in the online editor,I'm using C#, try for yourself, you will get the same error even if you submit an empty Main function

@dan-me
Copy link

dan-me commented Jun 22, 2015

@iskenxan Got the same problem, did you find a solution?

@Wizmann
Copy link

Wizmann commented Dec 4, 2015

i'm confused that why you don't use stdin as the input of the program. It's quite commonly used on most online judge platforms.

@teal18aa9f
Copy link

How to read inputs using javascript?

@HeidiHansen
Copy link

Bnickel's gist is no longer valid for Objective-C. Use this, and don't forget to declare your variables outside of for loops, otherwise it will throw you loads of gnuC99 errors.

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

    // read filename from the first argument
    NSString* filename = [NSString stringWithCString:argv[1] encoding:NSASCIIStringEncoding];
    NSString* content = [NSString stringWithContentsOfFile:filename encoding:NSASCIIStringEncoding error:nil];
    NSScanner* scanner = [NSScanner scannerWithString:content];

    while (![scanner isAtEnd]) {
        NSString* line;
        [scanner scanUpToString:@"\n" intoString:&line];

        //put your code here 

        printf("%s\n", [line cStringUsingEncoding:NSASCIIStringEncoding]);
    }

    [pool release];
    return 0;
}

@amit000
Copy link

amit000 commented Jan 27, 2016

here is another template for Java; this works fine in my local environement, but does not work on codeeval, what is the nme of the file that is being passed as input in codeeval? couldn't find it in templates as well.

public void readByLine(){   
try{
    FileReader inputFile= new FileReader("input.txt");
    BufferedReader buffer = new BufferedReader(inputFile);

    String line;

    while((line = buffer.readLine())!= null){

        convert(line); //method to implement logic
        // System.out.println(line); //just in case you need console testing

        }

    }
    buffer.close();


}catch(FileNotFoundException ex){
    System.out.println("file not found");

}catch(IOException ex){
    System.out.println("there are some issues");

}


}

@AnEmortalKid
Copy link

@amit000 they pass that with args so you can't hardcode the name m8

@watzon
Copy link

watzon commented Feb 3, 2016

Here's my working rust version:

use std::env;
use std::error::Error;
use std::fs::File;
use std::io::BufReader;
use std::io::prelude::*;
use std::path::Path;

fn solve(s: String) {
    println!("{}", s)
}

fn main() {
    let args: Vec<_> = env::args().collect();
    let path = Path::new(&args[1]);
    let display = path.display();
    let file = match File::open(&path) {
        // The `description` method of `io::Error` returns a string that describes the error
        Err(why) => panic!("couldn't open {}: {}", display, Error::description(&why)),
        Ok(file) => file,
    };
    let reader = BufReader::new(file);
    let lines: Vec<_> = reader.lines().collect();
    for l in lines {
        solve(l.unwrap());
    }
}

@ryanbgraham
Copy link

ryanbgraham commented Apr 25, 2016

I must be getting severely confused about how to run a program with input containing multiple lines. Can someone walk me through how to submit an answer for the challenge linked below? Basically sum of the lines. The actual function that would add up all of the numbers is easy enough, but I do not understand how to make my input be the different numbers from a file with multiple lines.

Working in Javascript.

https://www.codeeval.com/open_challenges/24/

@AmbitiousAnil
Copy link

What do i write as input and output filenames?

@redknight99
Copy link

Here's some starter code for Fortran. #MakeFortranGreatAgain
program main
implicit none
character(32) :: tests
character(10) :: test
integer :: stat
!Get file name
call get_command_argument(1, arg)
!Open file
open (11,file=trim(arg),action='read')
do
!read in test
read (11,'(a)',iostat=stat) test
if (stat /= 0) exit
if (str /= '') then
.........
! Code goes here
.........
end if
end do
close (11)
end program main

@savcha-v
Copy link

Please show me an example for python3, if you need to pass a parameter to the function, how do I issue the code?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment