প্রকারের মেটা: সবচেয়ে দীর্ঘতম উত্তর পান


14

আপনার টাস্ক - যদি আপনি এটি গ্রহণ করেন - একটি প্রোগ্রাম লিখতে যা কোনও প্রতিযোগিতার বিজয়ীর গণনা করে মেটা সম্পর্কিত আমার প্রস্তাবটি বুঝতে সহায়তা করে । অবশ্যই, এই প্রশ্নের উত্তরগুলি প্রস্তাবিত হিসাবে বিবেচিত হবে, সুতরাং আপনার প্রোগ্রাম (সঠিক হলে) আপনার উত্তর গৃহীত উত্তর হয়ে যাবে কিনা তা গণনা করতে পারে।

বিধি

  • প্রোগ্রামটি নিম্নোক্ত বিন্যাসের একাধিক লাইন সহ একটি ফাইল পড়ে (নীচে উদাহরণ দেখুন): [ভাষা] টিএবি [সংখ্যাঅফচারার্স] টিএবি [লিংকটো আনসার]
  • ফাইলের নামটি আপনার প্রোগ্রামের আর্গুমেন্ট হিসাবে পাস হয়েছে বা ফাইলটি আপনার প্রোগ্রামের স্ট্যান্ডার্ড ইনপুটটিতে পুনঃনির্দেশিত হয়েছে। এটি আপনার পছন্দ, উত্তর দেওয়ার সময় দয়া করে পদ্ধতিটি উল্লেখ করুন
  • এটি প্রত্যাশিত যে ইনপুট ফর্ম্যাটটি সঠিক। ত্রুটি পরিচালনার দরকার নেই।
  • চরিত্রের সংখ্যাটি ইতিবাচক। আপনার প্রোগ্রামটির দৈর্ঘ্য 65535 অবধি পরিচালনা করা উচিত 64৪ কে প্রত্যেকের জন্য পর্যাপ্ত হওয়া উচিত :-)
  • প্রোগ্রামটি স্ট্যান্ডার্ড আউটপুটে সেই লাইনগুলিকে আউটপুট করে যা মেটা প্রস্তাবের ধারণার সাথে মিলিত হয়, এটি
    • নির্দিষ্ট প্রোগ্রামিং ভাষার জয়ের সংক্ষিপ্ততম কোড (হ্রাস পর্ব)
    • সমস্ত প্রোগ্রামিং ভাষার জয়ের মধ্যে দীর্ঘতম কোড (বাছাই পর্ব)
    • অঙ্কনের ক্ষেত্রে, একই দৈর্ঘ্যের সমস্ত উত্তর মুদ্রিত করা উচিত
  • আউটপুট ক্রম গুরুত্বপূর্ণ নয়
  • দীর্ঘতম কোড জিতলেও, এটি । আপনার প্রোগ্রামিং ভাষার জন্য আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত হতে হবে।
  • খুব কম প্রোগ্রামিং ভাষাগুলির উত্তর যা কোড সংক্ষিপ্ত করার চেষ্টা করছে না তারা ডাউনভোটের যোগ্য, কারণ তারা এই ধরণের প্রশ্নের অভিপ্রায়টি বাইপাস করার চেষ্টা করে। নির্দিষ্ট প্রোগ্রামিং ভাষার জন্য যদি কেবলমাত্র একটি উত্তর থাকে তবে এটি বিজয়ী প্রার্থী হিসাবে বিবেচিত হবে, যাতে আপনি এর কোডটি ফুটিয়ে তোলা শুরু করতে পারেন।

উদাহরণ ইনপুট ফাইল (বিন্যাসে কোনও সমস্যা থাকলে একক ট্যাব দ্বারা পৃথক করা):

GolfScript  34  http://short.url/answer/ags
GolfScript  42  http://short.url/answer/gsq
C#  210 http://short.url/answer/cs2
Java    208 http://short.url/answer/jav
C#  208 http://short.url/answer/poi
J   23  http://short.url/answer/jsh
Ruby    67  http://short.url/answer/rub
C#  208 http://short.url/answer/yac
GolfScript  210 http://short.url/answer/210

প্রত্যাশিত আউটপুট (ক্রম গুরুত্বপূর্ণ নয়):

C#  208 http://short.url/answer/poi
C#  208 http://short.url/answer/yac
Java    208 http://short.url/answer/jav

হালনাগাদ

কিছু প্রোগ্রাম একটি একক সর্বোচ্চ (সি # 210 চরিত্রের প্রোগ্রামের মতো) রয়েছে এমন সত্যের উপর নির্ভর করে। বাস্তবতা থেকে প্রাপ্ত, কেউ 210 টি অক্ষর সহ একটি গল্ফস্ক্রিপ্ট প্রোগ্রামও লিখতে পারেন। আউটপুট একই থাকবে। আমি ইনপুটটিতে এরকম একটি গল্ফস্ক্রিপ্ট যুক্ত করেছি।

আপডেট 2

প্রস্তাবিত হিসাবে আমি আবারও ফিরে এসেছি (এখনও কোডগল্ফও রয়েছে) এবং সময়সীমা 2014-03-06 (যা একটি স্বেচ্ছাসেবী তারিখের মতো দেখায়, তবে আমি তখন ভ্রমণে জার্মানি ফিরে আসব)।

চূড়ান্ত ফলাফল

আমি নিম্নলিখিত মত ভোট দেওয়ার সিদ্ধান্ত নিয়েছে:

  • অক্ষরের সংখ্যা নিশ্চিত হওয়া যায় না এমন উত্তরগুলি গণনা ব্যাখ্যা করার জন্য একটি মন্তব্য পান।
  • যে উত্তরগুলি সহজেই হ্রাস করা যায় সেগুলি একটি মন্তব্য, একটি সম্পাদনার পরামর্শ পান এবং নিম্ন গণনা মান সহ ফলতে যান। (আশা করি আমি আগে থেকেই দেখেছি)।
  • যে উত্তরগুলি সংকলন করে না তারা একটি ডাউনভোট পান। (বেশ শক্ত কাজ যেমনটি পরিণত হয়েছে)।
  • যে উত্তরগুলি গল্ফ করা হয় না তারা একটি ডাউনভোট পান (ইতিমধ্যে বিধিগুলিতে বর্ণিত)।
  • প্রত্যাশিত আউটপুট উত্পাদন করে এমন উত্তরগুলি একটি উত্সাহ পেতে পারে। কিছু উত্তরের কারণে যা প্রত্যাশার মতো কাজ করে না, আমি 4 টি আলাদা ইনপুট ফাইল ব্যবহার করি এবং প্রত্যাশিত ফলাফলের বিরুদ্ধে পরীক্ষা করি।

পরিশেষে, বিজয়ী আমার রেফারেন্স প্রোগ্রামের ইনপুট হিসাবে যোগ্যতা উত্তর সারণী সরবরাহ করে নির্ধারিত হয় (প্লাস নিজেই ডাবল ফলাফল পরীক্ষা করে)। আমার নিজের উত্তরটি যদি বিজয়ী হয় তবে আমি এটিকে তালিকা থেকে বাদ দেব। বেশ কয়েকটি বিজয়ীর ক্ষেত্রে আমাকে কেবল একটি বাছাই করতে হবে। অতএব, কিছু বোনাস উপার্জন করা যায়:

  • উত্তর যা প্রত্যাশার চেয়ে বেশি ইনপুট গ্রহণ করে (যেমন সংজ্ঞায়িত ব্যাপ্তির বাইরে)
  • উত্তরগুলি যা এটি সংক্ষিপ্ত করে তোলার একটি চতুর ধারণা ব্যবহার করে

আমি উত্তরগুলির একটি স্ন্যাপশট 6 মার্চ 2014, 19:45 ইউটিসি + 1 এ নিয়েছি। বিশ্লেষণ চলছে। সমস্ত উত্তর চেক করা প্রত্যাশার চেয়ে শক্ত ...


এই মুহুর্তে কোড-চ্যালেঞ্জ ট্যাগ করা উচিত নয় ? এছাড়াও সময়সীমা কখন?
দ্য কনস্ট্রাক্টর

2
এর জন্য আল্ট-নামটি কোড-ব্ল্যাকজ্যাক
ভোরোনাইপোটাতো

উত্তর:


2

জাভা - 556

import java.util.*;class G{public static void main(String[]x){TreeMap<?,TreeMap>m=new TreeMap();try{Scanner s=new Scanner(System.in);for(;;){String[]a=s.nextLine().split("\t");a(new Long(a[1]),a(a[0],m)).put(a[2],a);}}catch(Exception e){}TreeMap<?,Map<?,String[]>>n=new TreeMap();for(TreeMap o:m.values())a(o.firstEntry().getKey(),n).putAll((Map)o.firstEntry().getValue());for(String[]o:n.lastEntry().getValue().values())System.out.println(o[0]+"\t"+o[1]+"\t"+o[2]);}static<T>Map a(T t,Map m){if(m.get(t)==null)m.put(t,new TreeMap());return(Map)m.get(t);}}

প্রোগ্রামটি STDIN থেকে পড়বে।

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

class G {
    public static void main(String[] x) {
        TreeMap<?, TreeMap> m = new TreeMap();
        try {
            Scanner s = new Scanner(System.in);
            for (; ; ) {
                String[] a = s.nextLine().split("\t");
                a(new Long(a[1]), a(a[0], m)).put(a[2], a);
            }
        } catch (Exception e) {
        }
        TreeMap<?, Map<?, String[]>> n = new TreeMap();
        for (TreeMap o : m.values())
            a(o.firstEntry().getKey(), n).putAll((Map) o.firstEntry().getValue());
        for (String[] o : n.lastEntry().getValue().values())
            System.out.println(o[0] + "\t" + o[1] + "\t" + o[2]);
    }

    static <T> Map a(T t, Map m) {
        if (m.get(t) == null)
            m.put(t, new TreeMap());
        return (Map) m.get(t);
    }
}
  1. প্রোগ্রামেম একটি ব্যতিক্রম ঘটনা ঘটানো অবধি লাইনে এক সাথে পঠন করবে (হয় ArrayIndexOutOfBoundsExceptionফাঁকা রেখার মুখোমুখি NoSuchElementExceptionহলে বা ইনপুট নতুন লাইনটি অনুসরণ না করে শেষ হলে)। প্রতিটি লাইন পঠন যুক্ত করা হয় TreeMap m, যা TreeMap<String, TreeMap<Long, TreeMap<String,String[]>>>(বাম থেকে ডান: ভাষা, কোড-আকার, URL, ইনপুট) হিসাবে সংজ্ঞায়িত হতে পারে ।
  2. তারপরে একটি ফলাফল- TreeSet<Long, TreeSet<String, String[]>> n(বাম থেকে ডান: কোড-আকার, ইউআরএল, ইনপুট) তৈরি করা হয় যেখানে প্রতিটি ভাষার বিষয়বস্তু firstEntry()একত্রিত করা হয়।
  3. lastEntry()একত্রিতগুলির TreeMapমধ্যে আমাদের ফলাফল রয়েছে - আমাদের কেবল এটি মুদ্রণ করা দরকার।

আইডোন.কম এ চেষ্টা করুন (সমস্ত লাইন পড়েছে তা দেখানোর জন্য শেষ দুটি লাইনের ইনপুট স্যুইচ করা হয়েছে)



1
সম্ভবত জাভা এবার জিতেছে, কারণ এতে কোনও বৈকল্পিক শব্দ নেই ...
থমাস ওয়েলারের

@ThomasW। শুধু উপলব্ধি আমি golfed সংস্করণ ভিতরে -.- কিছু অপ্রয়োজনীয় {} বাম
TheConstructor

এছাড়াও কেবল সম্পর্কিত হয়েছে আমি পূর্ণসংখ্যা ব্যবহার করছিলাম। ইন্টিগ্রিটি দীর্ঘের চেয়ে কম হলেও, পূর্ণসংখ্যার পক্ষে খুব দীর্ঘভাবে লম্বা-গল্ফ করা উচিত
TheConstructor

2

পার্ল, 195 বাইট

while(<>){/(\S+)\t(\d+)\t(.+)/;push@{$a{$1}},$3if$2==$l{$1};$l{$1}=$2,$a{$1}=[$3]if $2<($l{$1}//65536)}$m=(sort{$b<=>$a}values%l)[0];map{$l=$_;map{print"$l\t$m\t$_\n"if$l{$l}==$m}@{$a{$l}}}keys%l

STDIN এ ইনপুট আশা করা যায়, ফলাফল STDOUT এ লেখা হয়:

C#      208     http://short.url/answer/poi
C#      208     http://short.url/answer/yac
Java    208     http://short.url/answer/jav

উদার সংস্করণ

#!/usr/bin/env perl
use strict;
$^W=1;

# hash %language remembers the minimum count for a language
# %language: <language> => <minimum count>
my %language;
# hash %array remembers the URLs for the minimum count of the language
# %array: <language> => [<url>, <url>, ....]
my %array;

while(<>){
    # parse input line (no error checking)
    /(\S+)\t(\d+)\t(.+)/;
    my ($lang, $count, $url) = ($1, $2, $3);
    # add URL, if the count is the current minimum for the language
    if ($count == ($language{$lang}//0)) {
    # better, but longer version:
    # if (defined $language{$lang} and $count == $language{$lang}) {
        push @{$array{$lang}}, $url;
    }
    # create a new entry for the language, if there is a new minimum
    if ($count < ($language{$lang}//65536)) {
    # better, but longer version:
    # if (not defined $language{$lang} or $count < $language{$lang}) {
        $language{$lang} = $count;
        $array{$lang} = [$url];   
    }
}

# Sort the minimal values in numerical descending order and
# get the first entry as maximum.
my $maximum = (sort { $b <=> $a } values %language)[0];

# Loop over all URLs of minimal answers for the language,
# but print only the entries for the languages with the largest
# minima.
foreach my $lang (keys %language) {
    foreach my $url (@{$array{$lang}}) {
        if ($language{$lang} == $maximum) {
            print "$lang\t$maximum\t$url\n";
        }
    }
}
__END__

হাইকো, যেমন @ গ্রোভসএনএল উল্লেখ করেছেন, কিছু প্রোগ্রাম সম্ভবত একক সর্বোচ্চ থাকতে পারে তার উপর নির্ভর করতে পারে। আপনার প্রোগ্রামটি প্রভাবিত হয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন। কেবল ইনপুটটিতে একটি GolfScript 210 http://short.url/answer/210লাইন যুক্ত করুন এবং আউটপুটটি একই থাকে কিনা তা দেখুন। আসলে আমি মনে করি আপনার প্রভাবিত হয় না, কারণ আপনি সর্বাধিক [0] ব্যবহার করছেন তবে আমার কাছে এই মুহূর্তে চেষ্টা করার জন্য পার্ল উপলব্ধ নেই।
টমাস ওয়েলার

@ থমাসডাব্লু .: এটি প্রভাবিত হয় না। আমি লাইন যুক্ত করেছি এবং আউটপুট একই থাকে। ফাইলটি পড়ার প্রথম অংশের পরে, ডেটা স্ট্রাকচার %l/ %languageভাষা এবং তাদের ন্যূনতম মানগুলি অন্তর্ভুক্ত করে। ডেটা স্ট্রাকচারে %a/ %arrayকেবল সেই ভাষা / ইউআরএল জুড়ি থাকে, যার মান এই ভাষার জন্য সর্বনিম্ন। তারপরে সর্বনিম্ন মানগুলি অবতরণ ক্রমে সাজানো হয় এবং প্রথমটি বৈশ্বিক সর্বাধিক হিসাবে এবং %a/ এর জন্য ফিল্টার শর্ত হিসাবে ব্যবহৃত হয় %array
হাইকো ওবারডিক

2

পাইথন 378 377 372

import sys
d=__import__("collections").defaultdict(list)
o={}
x=int
n="\n"
for i,l,u in[a.split()for a in sys.stdin.read().strip().split(n)]:d[i]+=[(l,u)]
for e,b in d.items():o[e]=[i for i in b if i[0]==str(min([x(i[0])for i in b]))]
print("".join(n.join("\t".join([u,s[0],s[1]])for s in y if x(s[0])==max(x(i[0][0])for i in o.values()))+n for u,y in o.items()).strip())

স্টিডিনে ইনপুট:

C:\Users\gcq\Documents\python>type m.txt | python test.py
C#      208     http://short.url/answer/poi
C#      208     http://short.url/answer/yac
Java    208     http://short.url/answer/jav

551 অক্ষরে কমপ্রেস করা শুরু করার আগে আমার এটি ছিল:

from collections import defaultdict
import sys
d = defaultdict(list)

for language, length, url in [a.split() for a in sys.stdin.read().strip().split("\n")]:
    d[language].append((length, url))

o = {}
for language, data in d.items():
    winval = data[0][0]
    for i in data:
        if int(i[0]) < int(winval):
            winval = i[0]
    o[language] = [i for i in data if i[0] == winval]

maxlen = max(int(i[0][0]) for i in o.values())

for language, dataa in o.items():
    for data in dataa:
        if int(data[0]) == maxlen:
            print("\t".join([language, data[0], data[1]]))

1

সি # - 628

এখানে আপনার ব্যবহারের একটি দীর্ঘ বিকল্প রয়েছে DataTable:

using Microsoft.VisualBasic.FileIO;namespace System{using T=Data.DataTable;using R=Data.DataRow;using V=Data.DataView;using C=Data.DataColumn;class p{static void Main(string[] a){var I=typeof(Int32);T t=new T();t.Columns.AddRange(new[]{new C("a"),new C("b",I),new C("c"),new C("d",I)});var f=new TextFieldParser(a[0]);f.SetDelimiters("\t");while(!f.EndOfData){var r=t.NewRow();r.ItemArray=f.ReadFields();t.Rows.Add(r);}foreach(R r in t.Rows){r[3]=t.Compute("min(b)","a='"+r[0]+"'");}V v=new V(t);T s=v.ToTable();foreach(R r in s.Select("b='"+t.Compute("max(d)","")+"'")){Console.WriteLine(String.Join("\t",r[0],r[1],r[2]));}}}}

আমি প্রাথমিকভাবে ভেবেছিলাম যে সর্বাধিক / মিনিট ব্যবহার করে আমি সামান্য কোড হ্রাস পেয়েছি তবে দুর্ভাগ্যক্রমে (সারি / কলাম / দৃশ্য) DataTableতৈরি করতে প্রয়োজনীয় প্রকারগুলি DataTableঅনেক বেশি দৈর্ঘ্য যোগ করে। আমি গল্ফিং কোডে নতুন তাই সম্ভবত কেউ এটিকে আরও কমিয়ে আনতে সক্ষম হবে। তবুও একটি মজার চ্যালেঞ্জ।


1

ডিজি - 286 281 260 251 218 বাইট

import '/sys'
d=dict!
for(a,b,c)in(map str.split$(sys.stdin.read!).splitlines!)=>d!!a=(d.get a list!)+(list'(int b,c))
for(i,l)in(d.items!)=>for(s,u)in l=>s==(max$map(i->fst$min i)d.values!)=>print$i+' '+(str s)+' '+u

উদাহরণ:

$ cat langs.txt | dg langs.dg 
C# 208 http://short.url/answer/poi
C# 208 http://short.url/answer/yac
Java 208 http://short.url/answer/jav

অবরুদ্ধ সংস্করণ:

import '/sys'

s = sys.stdin.read!
d = dict!
# convert the string into a list of tuples (name, score, url)
u = map str.split $ s.splitlines!
# add all the values to the dict (converting the score to an integer)
for (a, b, c) in u =>
  d!!a = (d.get a list!) + (list' (int b, c))
# computes the maximum value amongst the mins
m = max $ map (i -> fst $ min i) d.values!
for (i, l) in (d.items!) =>
  for (s, u) in l =>
    # if the score equals the maximum then print all the line
    s == m => print $ i + ' ' + (str s) + ' ' + u  # actually here .format()
                                                   # would be better

প্রশ্ন: হিজ ডিজি কি?
: একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা সিপিথন বাইটকোডে সংকলিত হয়, অনেকটা স্কালার মতো জেভিএম-এর সংকলন করে। মূলত এর অর্থ হ'ল ডিজি পাইথন ৩ এর বিকল্প সিনট্যাক্স It এটি আপনাকে বিদ্যমান সমস্ত গ্রন্থাগারকেও ব্যবহার করতে দেয় allows

এখানে আরও তথ্য (এমনকি একটি টিউটোরিয়াল!): Https://pyos.github.io/dg


যদি আমি এটি কোনও ফাইলে রাখি তবে এটির 21 21 বাইট রয়েছে (লিনাক্স লাইন শেষ)
টমাস ওয়েলার

@ThomasW। অদ্ভুত! ব্যবহার cat langs.dg | wc -cআমি 218 পেতে!
রুবিক

ট্র্যাকিং নিউলাইন বনাম কোনও ট্রেলিং নিউলাইন নাও হতে পারে?
দ্য কনস্ট্রাক্টর

@ কনস্ট্রাক্টর এটি হতে পারে, যদিও এটি একটি নতুন লাইন
ওও

1

রিবোল - 314

d: map[]foreach r read/lines to-file system/script/args[r: split r tab p: take r r/1: to-integer r/1 r/2: reduce[r/2]either none? d/:p[repend d[p r]][case[d/:p/1 > r/1[d/:p: r]d/:p/1 = r/1[append d/:p/2 r/2]]]]l: 0 foreach[k v]d[l: max l v/1]foreach[k v]d[if l = v/1[foreach n v/2[print rejoin[k tab v/1 tab n]]]]

আন-golfed

d: map []

foreach r read/lines to-file system/script/args [
    r: split r tab
    p: take r
    r/1: to-integer r/1
    r/2: reduce [r/2]
    either none? d/:p [repend d [p r]] [
        case [
            d/:p/1 > r/1 [d/:p: r]
            d/:p/1 = r/1 [append d/:p/2 r/2]
        ]
    ]
]

l: 0 foreach [k v] d [l: max l v/1]
foreach [k v] d [
    if l = v/1 [
        foreach n v/2 [print rejoin [k tab v/1 tab n]]
    ]
]

ব্যবহারের উদাহরণ:

$ rebol script.reb data.txt
C#    208   http://short.url/answer/poi
C#    208   http://short.url/answer/yac
Java  208   http://short.url/answer/jav

0

সি # - 515

যুক্তি হিসাবে কোনও ফাইলের নাম আশা করে

using System.Collections.Generic;namespace N{using S=SortedList<int,T>;class T:List<string>{static void Main(string[]a){var d=new Dictionary<string,S>();int n,m=0;T w=new T();foreach(var l in System.IO.File.ReadAllLines(a[0])){var p=(a=l.Split('\t'))[0];n=int.Parse(a[1]);if(!d.ContainsKey(p))d.Add(p,new S());if(!d[p].ContainsKey(n))d[p].Add(n,new T());d[p][n].Add(l);}foreach(var e in d){n=e.Value.Keys[0];if(n==m)w.AddRange(e.Value[n]);if(n>m)w=e.Value[m=n];}foreach(var e in w)System.Console.WriteLine(e);}}}

প্রথমে আমি আমার সি # প্রোগ্রামটি সোজা এগিয়ে রাখার জন্য ডিজাইন করেছি, কারণ আমি এক ধরণের রেফারেন্স প্রোগ্রাম রাখতে চাইছিলাম। তবে আমি নিজেও প্রতিযোগিতায় ঝাঁপিয়ে পড়ার সিদ্ধান্ত নিয়েছি এবং এটি গল্ফ করেছি। এটি কোড + এর কিছু পূর্ববর্তী সংস্করণগুলির মধ্যে একটি:

// N: namespace
// P: Program
// S: type definition: sorted dictionary
// a: arguments
// d: data container
// r: lines read from text file
// l: single line from r
// t: tabbed part of l after splitting
// p: programming language name
// n: character count
// m: maximum character count
// w: list of winners
// e: entry in data container
// c: winner candidate
using System.Collections.Generic;
namespace N
{
    using S = SortedList<int, P>;
    public class P : List<string>
    {
        public static void Main(string[] a)
        {
            var r = System.IO.File.ReadAllLines(a[0]);
            // Make it a data structure
            var d = new Dictionary<string, S>();
            foreach (var l in r)
            {
                var t = l.Split('\t');
                var p = t[0];
                var n = int.Parse(t[1]);
                if (!d.ContainsKey(p)) d.Add(p, new S());
                if (!d[p].ContainsKey(n)) d[p].Add(n, new P());
                d[p][n].Add(l);
            }
            // Get the maximum values
            var m = 0;
            P w = null;
            foreach (var e in d)
            {
                foreach (var s in e.Value.Keys)
                {
                    if (s > m)
                    {
                        w = e.Value[s];
                        m = s;
                    }
                    else if (s == m)
                    {
                        w.AddRange(e.Value[s]);
                    }
                    break; // Break here to get the shortest solution per language
                }
            }
            // Print everything on console
            foreach (var e in w)
            {
                System.Console.WriteLine(e);
            }
        }
    }
}

আমার ডিস্কে এটি 515 ফাইলের আকারে বাইট অর্ডার চিহ্ন অন্তর্ভুক্ত রয়েছে। এখান থেকে অনুলিপি / পেস্ট করুন কেবল 512 বাইট।
টমাস ওয়েলার

0

সি # - 460 359

আমার DataTableসমাধানটি কতটা বিশাল ছিল তা বুঝতে পেরে আমি লিনক ব্যবহার করে নিম্নলিখিত উদাহরণটি তৈরি করেছি। এটি আমার আগের সমাধানের মতো একই পদ্ধতি ব্যবহার করে।

Golfed

namespace System{using Linq;using IO;class p{static void Main(string[]i){var l=(from f in File.ReadAllLines(i[0])let s=f.Split('\t')select new Tuple<string,int,string>(s[0],Convert.ToInt16(s[1]),f)).ToList();foreach(var f in l.Where(a=>a.Item2==l.Where(b=>b.Item1==l.Single(c=>c.Item2==l.Max(d=>d.Item2)).Item1).Min(e=>e.Item2)))Console.WriteLine(f.Item3);}}}

Ungolfed

namespace System
{
    using Linq;
    using IO;
    class p
    {
        static void Main(string[]i)
        {
            var l=(from f in File.ReadAllLines(i[0])
                   let s=f.Split('\t')
                   select new Tuple<string, int, string>(s[0],Convert.ToInt16(s[1]),f)).ToList();
            foreach(var f in l.
                Where(a=>a.Item2==l.
                    Where(b=>b.Item1==l.
                        Single(c=>c.Item2==l.
                            Max(d=>d.Item2)).Item1).
                                Min(e=>e.Item2)))
            Console.WriteLine(f.Item3);
        }
    }
}

আমি এখনও লিনকের কাছে মোটামুটি নতুন তাই আমি এই ধরণের অভিব্যক্তিগুলি আরও কমিয়ে আনতে পারি ইতিবাচক।

আপনার প্রশ্ন থেকে, একক সর্বোচ্চ দৈর্ঘ্যের সমাধান আছে কিনা তা পরিষ্কার নয়। আমার উত্তরের জন্য আমি এই ধারণাটি ব্যবহার করেছি যে এখানে একটি একক সর্বোচ্চ পয়েন্ট রয়েছে (যেমন, যদি 212 সর্বাধিক গল্ফস্ক্রিপ্টও থাকে, তবে এটি একক সর্বোচ্চ রেকর্ডের ভিত্তিতে ব্যর্থ হতে পারে)। হাইকোর সমাধানেও একই সমস্যা হবে। এটি ঠিক করতে, আমাদের আরও একটি পদক্ষেপ যুক্ত করতে হবে যাতে প্রতিটি ভাষার জন্য মিনিমা পরীক্ষা করতে বাঁধা ম্যাক্সিমার একটি তালিকা থাকে।


1
আমার কাছে মনে হচ্ছে আপনি f কে আইটেম 3 হিসাবে রক্ষা করতে পারবেন (s [2] এর পরিবর্তে) এবং তারপরে আইটেম 1 এবং আইটেম 2 পুনরায় সমন্বিত না করে কনসোলে f.Item3 লিখতে পারেন।
টমাস ওয়েলার

প্রয়োজনীয়তা স্পষ্ট করার জন্য ধন্যবাদ। বাস্তবতা থেকে প্রাপ্ত আমি বলব যে এটি ঘটতে পারে যে কেউ (অচেতন, স্পষ্টতই) 210 টি অক্ষর সহ একটি গল্ফস্ক্রিপ্ট লিখেছেন।
টমাস ওয়েলার

1
আপনি যদি প্রথম ফোরচ-লুপটিকে লিনিকিউতে রূপান্তর করেন তবে এটি আরও খাটো হয়ে যায়:namespace System{using Linq;using IO;class p{static void Main(string[]i){var l=(from f in File.ReadAllLines(i[0])let s=f.Split('\t') select new Tuple<string, int, string>(s[0],Convert.ToInt16(s[1]),f)).ToList();foreach(var f in l.Where(a=>a.Item2==l.Where(b=>b.Item1==l.Single(c=>c.Item2==l.Max(d=>d.Item2)).Item1).Min(e=>e.Item2)))Console.WriteLine(f.Item3);}}}
টমাস ওয়েলারের

@ থমাসডাব্লু: বিভাজনের জন্য ভাল ধারণা। ফোরচ লুপ রূপান্তর করার জন্য ধন্যবাদ, আমি এটিকে মূলত যুক্ত করার বিষয়ে ভেবেছিলাম তবে আমি জানি না যে আমি সেভাবেই ব্যবহার করতে পারি।
গ্রোভসএনএল

আমি মনে করি আমি বুঝতে কি আপনার প্রশ্নের নেই :) এবং এটি ভালো সহজ ইনপুট জন্য ব্যর্থ হবে শুরু করুন: Golfscript 100 ..., C# 1 ..., C# 200 ...। এটি সম্ভবত কিছু পুনর্নির্মাণের প্রয়োজন
টমাস ওয়েলারের

0

সি ++ - 535

সম্ভাব্য বিজয়ী হিসাবে প্রতিটি ভাষার শুধুমাত্র সংক্ষিপ্ত উত্তরগুলি বেছে নেওয়ার পরে কেবল দীর্ঘতর স্থিতির জন্য আবদ্ধ উত্তরগুলি আউটপুট দেয়।

#include<fstream>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){

    string s;
    vector<string>l;
    vector<int>v;
    vector<string>u;
    cin>>s;

    ifstream i(s.c_str());

    do{
        int n;
        i>>s;
        if(i.eof())break;
        l.push_back(s);
        i>>n;
        v.push_back(n);
        i>>s;
        u.push_back(s);
    }while(1);

    for(int i=0;i<l.size();i++){
        for(int j=0;j<l.size();j++){
            if(l[j]==l[i]){
                if(v[i]>v[j])l[i]="";
                else if(v[i]<v[j])l[j]="";
            }
        }
    }
    int n=0;
    for(int i=0;i<v.size();i++)
        if(n<v[i]&l[i]!="")n=v[i];

    for(int i=0;i<v.size();i++)
        if(v[i]==n)cout<<l[i]<<'\t'<<v[i]<<'\t'<<u[i]<<endl;
}

গল্ফড (কিছু ভাষার মতো অপঠনযোগ্য নয়):

#include<fstream>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){string s;vector<string>l;vector<int>v;vector<string>u;cin>>s;ifstream i(s.c_str());do{int n;i>>s;if(i.eof())break;l.push_back(s);i>>n;v.push_back(n);i>>s;u.push_back(s);}while(1);for(int i=0;i<l.size();i++)for(int j=0;j<l.size();j++)if(l[j]==l[i]){if(v[i]>v[j])l[i]="";else if(v[i]<v[j])l[j]="";}int n=0;for(int i=0;i<v.size();i++)if(n<v[i]&l[i]!="")n=v[i];for(int i=0;i<v.size();i++)if(v[i]==n)cout<<l[i]<<'\t'<<v[i]<<'\t'<<u[i]<<endl;}

আপনি কি নিজের আউটপুটটি প্রত্যাশিত আউটপুটটির বিপরীতে পরীক্ষা করেছেন? 8 লাইন ইনপুট সহ এটি আউটপুট হিসাবে কেবল 3 লাইন দেবে। আপনার প্রোগ্রামটি সবকিছু আউটপুট বলে মনে হচ্ছে।
থমাস ওয়েলার

@ThomasW। ওহ, আমি সেই অংশটি ভুল বুঝেছি। আমি আপাতত এটি অপসারণ করব।

@ThomasW। এটা কি ঠিক দেখাচ্ছে?

যদি আমি এটি কোনও ফাইলের মধ্যে রাখি তবে আমি ৫৫০ বাইট পেয়েছি, ৫৩৫ না you
টমাস ওয়েলার 19

এটি 535 টি অক্ষর। আমরা দুজনেই সঠিক। আপনি চাইলে আমি এটি পরিবর্তন করতে পারি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.