{{:treffen:problemsolving:rummy.jpg?400|}} [[https://creativecommons.org/licenses/by-sa/3.0/|CC BY-SA 3.0]] by [[https://en.wikipedia.org/wiki/Rummy#/media/File:A_Game_of_Rummy.JPG|David Lazich]] ====== 005: Colorized Rummy ====== | Series | [[treffen:codegolfing|CodeGolfings]] | | Submission due | Sat. Nov 28th 2020 at 3pm| | Event | Sat. Nov 28th 2020 at 4pm | | Details | {{ :treffen:005_codegolfing_v0.2.pdf |005 CodeGolfing v0.2 [PDF]}} | | Venue | [[https://meet.jit.si/005CodeGolfing|https://meet.jit.si/005CodeGolfing]] PW: ''v0x201'' | | Contact | max at vspace.one | | Difficulty | {{:treffen:problemsolving:progress2.png?nolink&160 |}} | NOTE: Previous description: {{ :treffen:005_codegolfing.pdf |005 CodeGolfing v0.1 [PDF]}} ===== (some) Testcases ===== [ { "in": "rkyb", "out": 0}, { "in": "rkybky", "out": 0}, { "in": "rkybr", "out": 1}, { "in": "rrrkyb", "out": 1}, { "in": "rrkkyyb", "out": 0}, { "in": "rrkkyybb", "out": 0}, { "in": "rrkkyy", "out": 0}, { "in": "k", "out": 1}, { "in": "kb", "out": 1}, { "in": "kkbb", "out": 1} ] ===== Solutions ===== ==== Ruby (>=2.7) ==== 69B, max Beschreibung: {{ :treffen:20210325_005_codegolfing_v2.pdf |005 Code Golfing Solution [pdf]}} s=$*[0].chars.tally.values+[0,0,0].sort exit(s[3]>=2*s[0]-s[1]-s[2]) ==== Python ==== 83B, chris import sys a,b,c,d=sorted(sys.argv[1].count(x) for x in "rybk") 1/(2*d-c<=a+b<=d*2) ==== Python ==== 85B, max import sys c=sorted([sys.argv[1].count(x)for x in"yrbk"]) exit(c[0]<2*c[3]-c[1]-c[2]) ==== Perl ==== 86B, max for(yrbk=~/./g){$r[$i++]=()=$ARGV[0]=~/$_/g}@r=sort@r;exit(@r[0]<2*@r[3]-@r[2]-@r[1]) ==== Python ==== 172B, m0rix import sys i=sys.argv[1] l=sorted([i.count("b"),i.count("y"),i.count("r"),i.count("k")]) while l[0]!=l[3]and l[0]>=0: l[1]-=1;l[2]-=1;l[3]-=1;l=sorted(l) exit(l[0]!=l[3]) ==== Python ==== 226B, nikax import sys x=sys.argv[1] y=[] for l in ['b','y','k','r']:y+=[x.count(l)] y.sort() o=1 while y[0]!=0: if y[2] ===== Tests not passed ===== ==== PHP ==== 105B, marc $c[0]*2-$c[1]-$c[2]); ==== Java ==== 1.7KB, alexander import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class Alex { private static ConcurrentHashMap> lists = new ConcurrentHashMap<>(); private static ConcurrentHashMap chars = new ConcurrentHashMap<>(); public static void main(String[] args) { for (char c : args[0].toCharArray()) { if (!(c == 'r' || c == 'y' || c == 'b' || c == 'k')) return; chars.put(chars.size(), c); } lists.put(0, new ArrayList<>()); lists.get(0).add(chars.get(0)); chars.remove(0); for (int i : chars.keySet()) { for (int j : lists.keySet()) { if (!lists.get(j).contains(chars.get(i)) && lists.get(j).size() < 3) { lists.get(j).add(chars.get(i)); chars.remove(i); } else if (chars.size() >= 3 && isEverythingMin()) { lists.put(lists.size(), new ArrayList<>()); lists.get(lists.size() - 1).add(chars.get(i)); chars.remove(i); } } } for (int k : lists.keySet()) { for (int l : chars.keySet()) { if (!lists.get(k).contains(chars.get(l))) { lists.get(k).add(chars.get(l)); chars.remove(l); } } } System.out.println((chars.size() > 0 ? "Error" : "Success")); } private static boolean isEverythingMin() { for(int i : lists.keySet()) { if(lists.get(i).size() < 3) { return false; } } return true; } } ===== Außer Konkurrenz ===== ==== Python ==== 78B, chris,max import sys a,b,c,d=sorted(sys.argv[1].count(x) for x in"rybk") 1/(a>=2*d-b-c) ===== Preformance Award ===== **FOLGT** ~~DISCUSSION~~