treffen:codegolfing:005

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
treffen:codegolfing:005 [2020/11/25 20:13]
max [005 Code Golfing - Colorized rummy]
treffen:codegolfing:005 [2021/08/25 08:15]
max
Zeile 1: Zeile 1:
-[[treffen:codegolfing|CodeGolfings]]+{{:treffen:problemsolving:rummy.jpg?400|}}
  
-====== 005 Code Golfing Colorized rummy ======+[[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]]
  
-| 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: | online; link will be published here beforehand | 
-| Contact: | max at vspace.one | 
  
  
-NOTEPrevious description: {{ :treffen:005_codegolfing.pdf |005 CodeGolfing v0.1 [PDF]}}+====== 005Colorized Rummy ======
  
-Current number of submissions**6** +| Series | [[treffen:codegolfing|CodeGolfings]] |  
- +Submission due  Sat. Nov 28th 2020 at 3pm
-===== Scoring ===== +Event  Sat. Nov 28th 2020 at 4pm 
-^ Lang ^ Bytes ^ +Details {{ :treffen:005_codegolfing_v0.2.pdf |005 CodeGolfing v0.2 [PDF]}}    
-python 85B +Venue [[https://meet.jit.si/005CodeGolfing|https://meet.jit.si/005CodeGolfing]] PW: ''v0x201'' 
-perl 86B +Contact max at vspace.one 
-php 105B +Difficulty | {{:treffen:problemsolving:progress2.png?nolink&160 |}} 
-python 177B +
-python 226B +
-java 1710B +
  
  
 +NOTE: Previous description: {{ :treffen:005_codegolfing.pdf |005 CodeGolfing v0.1 [PDF]}}
  
 ===== (some) Testcases ===== ===== (some) Testcases =====
Zeile 34: Zeile 27:
  { "in": "rrkkyyb", "out": 0},  { "in": "rrkkyyb", "out": 0},
  { "in": "rrkkyybb", "out": 0},  { "in": "rrkkyybb", "out": 0},
- { "in": "rrkkyy", "out": 0}+ { "in": "rrkkyy", "out": 0}, 
 + { "in": "k", "out": 1}, 
 + { "in": "kb", "out": 1}, 
 + { "in": "kkbb", "out": 1}
 ] ]
 </code> </code>
  
 ===== Solutions ===== ===== Solutions =====
 +
 +==== Ruby (>=2.7) ====
 +69B, max
 +
 +Beschreibung: {{ :treffen:20210325_005_codegolfing_v2.pdf |005 Code Golfing Solution [pdf]}}
 +
 +<code>
 +s=$*[0].chars.tally.values+[0,0,0].sort
 +exit(s[3]>=2*s[0]-s[1]-s[2])
 +</code>
 +
 +==== Python ====
 +83B, chris
 +
 +<code>
 +import sys
 +a,b,c,d=sorted(sys.argv[1].count(x) for x in "rybk")
 +1/(2*d-c<=a+b<=d*2)
 +</code>
 +
 +==== Python ====
 +85B, max
 +
 +<code>
 +import sys
 +c=sorted([sys.argv[1].count(x)for x in"yrbk"])
 +exit(c[0]<2*c[3]-c[1]-c[2])
 +</code>
 +
 +==== Perl ====
 +86B, max
 +
 +<code>
 +for(yrbk=~/./g){$r[$i++]=()=$ARGV[0]=~/$_/g}@r=sort@r;exit(@r[0]<2*@r[3]-@r[2]-@r[1])
 +</code>
 +
 +
 +==== Python ====
 +172B, m0rix
 +
 +<code>
 +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])
 +</code>
 +
 +==== Python ====
 +226B, nikax
 +
 +<code>
 +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]<y[3]:y[2]+= 1
 +    elif y[1]<y[3]:y[1]+= 1
 +    else:break
 +    y[0]-=1
 +if(y[1]==y[2]==y[3]):o=0
 +exit(o)
 +</code>
 +
 +===== Tests not passed =====
 +
 +
 +==== PHP ====
 +105B, marc
 +
 +<code>
 +<?php $s=$argv[1];$c=[0,0,0,0];foreach(str_split($s)as$x)$c[$x]-=1;sort($c);exit($c[3]>$c[0]*2-$c[1]-$c[2]);
 +</code>
 +
 +==== Java ====
 +1.7KB, alexander
 +
 +<code>
 +
 +import java.util.*;
 +import java.util.concurrent.ConcurrentHashMap;
 +
 +public class Alex {
 +
 +    private static ConcurrentHashMap<Integer, List<Character>> lists = new ConcurrentHashMap<>();
 +    private static ConcurrentHashMap<Integer, Character> 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;
 +    }
 +
 +}
 +</code>
 +
 +===== Außer Konkurrenz =====
 +==== PHP ====
 +78B, chris,max
 +
 +<code>
 +import sys
 +a,b,c,d=sorted(sys.argv[1].count(x) for x in"rybk")
 +1/(a>=2*d-b-c)
 +</code>
 +
  
 ===== Preformance Award ===== ===== Preformance Award =====
 +
 +**FOLGT**
  
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  • treffen/codegolfing/005.txt
  • Zuletzt geändert: 2022/07/01 18:56
  • von marc_weber