This is my solution
import java.io.*;
public class A {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new
FileReader("C:/java/A-large-practice.in"));
BufferedWriter bw = new BufferedWriter(new
FileWriter("C:/java/output.out"));
String line = br.readLine();
int D = Integer.parseInt(line.split(" ")[1]);
int N = Integer.parseInt(line.split(" ")[2]);
String[] words = new String[D];
for (int i = 0; i<D; i++)
words[i]=br.readLine();
for (int i = 1; i <= N; i++) {
line = br.readLine();
line = line.replaceAll("\\(", "[");
line = line.replaceAll("\\)", "]");
int ans = 0;
for (String word: words)
if (word.matches(line))
ans++;
bw.append("Case #" + i + ": " + ans + "\n");
System.out.print("Case #" + i + ": " + ans+"\n");
}
bw.close();
}
}
On Fri, May 6, 2011 at 12:38 PM, Jeroen van Erp <[email protected]> wrote:
> And a solution in Scala (Well nearly Java ;-))...
>
> object AlienLanguage {
>
> def main(args: Array[String]) = {
> if (args.length == 0) {
> throw new IllegalArgumentException("Could not find input file in
> arguments")
> }
>
> val input = args(0)
> val outputFile = new File((input substring (0, input lastIndexOf
> ("."))) + ".out")
> val reader = Source fromFile (input) getLines
> val ar = reader nextIntArray
> val (tokens, nrWords, nrProblems) = (ar(0), ar(1), ar(2))
> val results = new Array[String](nrProblems)
>
> val words = (1 to nrWords).map(x => reader.trimmedLine).toList
> for (val i <- 1 to nrProblems) {
> results(i - 1) = "Case #" + i + ": " + solveProblem(reader, words)
> }
> outputFile write results
> }
>
> /**
> * Convert the pattern received from the aliens to a regex and match it
> against the dictionary
> */
> def solveProblem(reader: Iterator[String], words: List[String]): String =
> {
> val pattern = reader.trimmedLine
> val regex = pattern.replaceAll("\\(", "[").replaceAll("\\)", "]").r
>
> matchWords(regex, words.head, words.tail).toString
> }
>
> /**
> * Recursive method to sum up all the matches
> */
> def matchWords(regex: scala.util.matching.Regex, word: String, words:
> List[String]): Int = {
> words.isEmpty match {
> case true => matchWord(regex, word)
> case false => matchWord(regex, word) + matchWords(regex, words.head,
> words.tail)
> }
> }
>
> /**
> * Return 1 for a match, 0 for none
> */
> def matchWord(regex: scala.util.matching.Regex, word: String): Int = {
> regex.findFirstIn(word) match {
> case Some(x) => 1
> case None => 0
> }
> }
> }
>
>
> On Fri, May 6, 2011 at 7:15 AM, Seydou TAPSOBA <[email protected]> wrote:
>
>> This is my Solution in Java!!
>>
>>
>> import java.io.File;
>> import java.io.FileNotFoundException;
>> import java.io.PrintWriter;
>> import java.util.ArrayList;
>> import java.util.List;
>> import java.util.Scanner;
>>
>>
>> public class alien {
>>
>> /**
>> * @param args
>> * @throws FileNotFoundException
>> */
>> public static void main(String[] args) throws FileNotFoundException {
>>
>> Scanner in = new Scanner(new File("aliens.in"));
>> PrintWriter out = new PrintWriter(new File("aliens.out"));
>>
>> String[] data = in.nextLine().split(" ");
>>
>> int l = Integer.parseInt(data[0]);
>> int d = Integer.parseInt(data[1]);
>> int cas = Integer.parseInt(data[2]);
>>
>> String rawWord;
>> int count = 0;
>>
>>
>> String[] dico = new String[d];
>>
>> for (int i = 0; i < dico.length; i++) {
>> dico[i] = in.nextLine();
>> }
>>
>> for (int i = 1; i <= cas; i++) {
>>
>> rawWord = in.nextLine();
>>
>> List<String> cases = new ArrayList<String>();
>> String mot = "";
>> char currentDictionnaryChar;
>> String letters = "";
>>
>> cases = getTokens(rawWord);
>>
>>
>>
>>
>> // on traite chaque mot du dico pour vérifier si oui ou non
>> il peut
>> // être construit avec la chaine reçue
>> for (int j = 0; j < dico.length; j++) {
>>
>> mot = dico[j];
>>
>> boolean found = true;
>>
>> for (int k = 0; k < l; k++) {
>>
>>
>> currentDictionnaryChar = mot.charAt(k);
>>
>> letters = cases.get(k);
>> if(letters.indexOf(""+currentDictionnaryChar) ==
>> -1){
>> found = false;
>> break;
>> }
>>
>> }
>> if(found) count++;
>> } // tous les mots du dico sont traités
>>
>> out.print("Case #"+ i +": "+count);
>> count = 0;
>> if(in.hasNext()) out.println();
>> }
>> out.close();
>>
>>
>> }
>>
>> public static List<String> getTokens(String raw) {
>>
>> List<String> temp = new ArrayList<String>();
>> StringBuffer rawTemp = new StringBuffer(raw);
>>
>> int i = 0, j = 0;
>> while(rawTemp.capacity() != 0){
>> i = rawTemp.indexOf("(") ;
>> j = rawTemp.indexOf(")") ;
>> switch(i) {
>> case 0:
>>
>> temp.add("" + rawTemp.substring(i+1, j));
>> rawTemp = rawTemp.delete(i, j+1);
>> break;
>> case -1 :
>>
>> for (int j2 = 0; j2 < rawTemp.length(); j2++) {
>> temp.add("" + rawTemp.charAt(j2));
>> }
>>
>> rawTemp = rawTemp.delete(0, rawTemp.length());
>> break;
>> default :
>>
>> for (int j2 = 0; j2 < i; j2++) {
>> temp.add("" + rawTemp.charAt(j2));
>> }
>> rawTemp = rawTemp.delete(0, i);
>> break;
>> }
>>
>>
>>
>> rawTemp.trimToSize();
>>
>> }
>> return temp;
>>
>> }
>>
>>
>>
>>
>>
>> }
>>
>>
>>
>>
>>
>>
>> 2011/5/6 이홍일 <[email protected]>
>>
>>> You can get source code on scoreboard.
>>> That is not difficult problem.
>>> You can get solution if you think little more.
>>>
>>> 2011/5/6 Matty <[email protected]>
>>>
>>>> Does anybody have a solution code for this problem written in Java?
>>>> I'm stuck...
>>>>
>>>> Thanks in advance,
>>>>
>>>> Matt
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "google-codejam" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected].
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/google-code?hl=en.
>>>>
>>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "google-codejam" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/google-code?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "google-codejam" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/google-code?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "google-codejam" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-code?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"google-codejam" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-code?hl=en.