-
-
Save royvanrijn/33e780c1f270691cd326 to your computer and use it in GitHub Desktop.
Oplossing voor de verfspetter-uitdaging, zonder enter 753 karakters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import static java.lang.Math.*;import static java.util.Arrays.*;public class V{public static void main(String[]a){a=a[0].split(",");int s=(int)sqrt(a.length);int[] g=new int[s*s],l=new int[s*s],c=new int[s*s];int e=0;fill(g,-1);fill(l,-1);for(int x=0;x<s;x++)for(int y=0;y<s;y++){int p=(x*s)+y;int m=y>0&&l[p-1]!=-1?l[p-1]:p;if(a[p].equals("X")){for(int z=max(0,y-1);z<min(s,y+2);z++){e=(x-1)*s+z;if(x>0&&l[e]>-1)g[l[e]]=m=min(m,l[e]);}c[g[p]=l[p]=m]++;}}for(int i=s*s;i-->1;)if((g[i]*g[i-1])>0&&g[i]<g[i-1])g[i-1]=g[i];for(int i=0;i<s*s;i++)if(g[i]>=0&&g[i]<i){c[g[i]]+=c[i];c[i]=0;}e=-1;for(int i=0;i<s*s;i++)if(c[i]>0)e=e==-1?i:c[i]<c[e]?i:e;String q=c[e]+":";for(int i=0;i<s*s;i++)if(l[i]>=0&&g[l[i]]==e)q+="("+i%s+","+i/s+")";System.out.print(q);}} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Om te runnen, zet alles op één lange regel:
java V O,X,O,O,O,O,O,O,O,O,O,O,X,X,O,O,O,X,X,X,O,O,O,O,X,X,X,O,X,O,X,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,X,O,O,O,X,X,O,O,O,O,O,X,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,X,X,X,X,X,X,O,O,O,O,O,O,O,O,X,X,O,O,O,O,O,O,X,O,O,O,O,X,O,O,O,X,X,X,X,O,O,O,O,O,X,X,O,X,X,X,X,X,X,X,O,O,O,X,O,O,O,O
Werkt met alle vierkante inputs, ook met grote 'U'-vormen zoals:
X,O,O,X,X,O,X,O,X,O,O,X,X,X,X,X
(Dit gaat fout als je een te simpele oplossing maakt)