Bir çeşit meta: en kısa cevapların en uzununu alın


14

Göreviniz - kabul ederseniz - yarışmanın galibini hesaplayarak meta teklifimi anlamaya yardımcı olan bir program yazmaktır . Tabii ki, bu sorunun cevapları önerildiği gibi ele alınacaktır, böylece programınız (eğer doğruysa) cevabınızın kabul edilen cevap olup olmayacağını hesaplayabilir.

kurallar

  • Program aşağıdaki formatta birden çok satırı olan bir dosyayı okur (aşağıdaki örneğe bakın): [Dil] SEKME [NumberOfCharacters] SEKME [LinkToAnswer]
  • Dosya adı programınıza bağımsız değişken olarak iletilir veya dosya programınızın standart girişine yönlendirilir. Seçim sizin, cevabı verirken lütfen yöntemi belirtin
  • Girdi biçiminin doğru olması beklenir. Hata işlemeye gerek yoktur.
  • Karakter sayısı pozitif. Programınız 65535'e kadar uzunlukları işlemelidir. 64k herkes için yeterli olmalıdır :-)
  • Program, bu teklifleri meta teklif fikrini karşılayan standart çıktıda, yani
    • belirli bir programlama dilinin en kısa kodu kazanır (azaltma aşaması)
    • tüm programlama dilleri arasındaki en uzun kod kazanır (sıralama aşaması)
    • çekiliş halinde, aynı uzunluktaki tüm cevaplar yazdırılır
  • Çıktının sırası önemli değil
  • En uzun kod kazanmasına rağmen, bu değildir . Kodunuz programlama diliniz için mümkün olduğunca kısa olmalıdır.
  • Kodu kısaltmaya çalışmayan nadiren programlama dillerinde verilen cevaplar bir aşağı oyu hak eder, çünkü bu tür bir sorunun niyetini atlamaya çalışırlar. Belirli bir programlama dili için sadece bir cevap varsa, kazanan bir aday olarak kabul edilir, böylece kodunu üflemeye başlayabilirsiniz.

Örnek girdi dosyası (biçimlendirmeyle ilgili bir sorun olması durumunda tek sekmelerle ayrılır):

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

Beklenen çıktı (sipariş önemli değil):

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

Güncelleme

Bazı programlar tek bir maksimuma (C # 210 karakter programı gibi) güvenir. Gerçeklikten türetilen biri, 210 karakterli bir GolfScript programı da yazabilir. Çıktı aynı kalacaktı. Girişe böyle bir GolfScript ekledim.

Güncelleme 2

Önerildiği gibi ben yeniden etiketlenmiş (hala kod golf de) ve son tarih 2014-03-06 (keyfi bir tarih gibi görünüyor, ama o zaman seyahat Almanya'ya geri olacak).

Nihai sonuçlar

Aşağıdaki şekilde oy kullanmaya karar verdim:

  • Karakter sayısının onaylanamadığı cevaplar sayıyı açıklamak için bir yorum alır.
  • Kolayca azaltılabilen cevaplar bir yorum, bir düzenleme önerisi alır ve daha düşük sayım değeri ile sonuca gider. (Umarım bunu önceden görmüştüm).
  • Derlemeyen cevaplar bir alt oy alır. (Oldukça zor bir görev ortaya çıkıyor).
  • Golf yapmayan cevaplar bir aşağı oy alır (zaten kurallarda açıklandığı gibi).
  • Beklenen çıktıyı üreten cevaplar yükselir. Beklendiği gibi çalışmayan bazı yanıtlar nedeniyle, 4 farklı girdi dosyası kullanıyorum ve beklenen sonuca karşı kontrol ediyorum.

Son olarak, kazanan, referans programıma girdi olarak nitelikli cevaplar tablosu sağlanarak belirlenir (artı sonucu manuel olarak iki kez kontrol ederek). Eğer kendi cevabım kazanan cevap olsaydı, listeden çıkarırdım. Birden fazla kazanan olması durumunda, sadece bir tane seçmem gerekir. Bu nedenle, bazı bonuslar kazanılabilir:

  • beklenenden daha fazla girdi kabul eden cevaplar (örneğin tanımlanan aralıkların dışında)
  • kısa yapmak için akıllıca bir fikir kullanan cevaplar

6 Mart 2014, 19:45 UTC + 1'de cevapların anlık görüntüsünü aldım. Analiz devam ediyor. Tüm cevapları kontrol etmek beklenenden daha zor ...


Şimdilik kod meydan okuması olarak etiketlenmemeli mi? Ayrıca son başvuru tarihi ne zaman?
TheConstructor

2
Bunun için Alt-isim Code-Blackjack
VoronoiPotato

Yanıtlar:


2

Java - 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);}}

Program STDIN'den okunacaktır.

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. Program, bir istisna oluşana kadar satır satır okuyacaktır ( ArrayIndexOutOfBoundsExceptionboş bir satırla karşılaşıldığında veya NoSuchElementExceptiongiriş yeni satır izlemeden sona ererse). Okunan her satır (soldan sağa: dil, kod boyutu, URL, giriş) TreeMap molarak tanımlanmış olabilir TreeMap<String, TreeMap<Long, TreeMap<String,String[]>>>.
  2. Ardından TreeSet<Long, TreeSet<String, String[]>> n, her dilin içeriğinin firstEntry()toplandığı bir sonuç (soldan sağa: kod boyutu, URL, giriş) oluşturulur .
  3. lastEntry()topladığımız TreeMapsonuç bizim sonucumuzu içeriyor - sadece yazdırmamız gerekiyor.

İdeone.com adresini deneyin (tüm satırların okunduğunu göstermek için son iki satır girişi değiştirildi)


BufferedReader -.- saklamak için bir değişken eklemek zorunda kaldım
TheConstructor

1
Belki Java bu kez kazanır, çünkü değişken bir anahtar kelimesi yoktur ...
Thomas Weller

@ThomasW. sadece golf sürümünün içinde bazı gereksiz {} bıraktım fark ettim.
TheConstructor

Ayrıca sadece relaize oldu Tamsayı kullanıyordum. İnt uzun daha kısa olmasına rağmen, Tamsayı shurely -.- Long golfed edilmelidir
TheConstructor

2

Perl, 195 bayt

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 içinde girdi bekleniyor, sonuç STDOUT'a yazılıyor:

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

Ungolfed sürümü

#!/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__

Hegro, @grovesNL'nin belirttiği gibi, bazı programlar tek bir maksimumun olduğu gerçeğine güvenebilir. Belki de programınızın etkilenip etkilenmediğini kontrol edebilirsiniz. Sadece GolfScript 210 http://short.url/answer/210girdiye bir satır ekleyin ve çıktının aynı kalıp kalmadığına bakın. Aslında sizinkinin etkilenmediğini düşünüyorum, çünkü maksimum için [0] kullanıyorsunuz, ancak şu anda denemek için Perl mevcut değil.
Thomas Weller

@ThomasW .: Etkilenmez. Satırı ekledim ve çıktı aynı kaldı. Dosyayı okuyan ilk bölümden sonra, veri yapısı %l/ %languagedilleri ve minimum değerlerini içerir. Veri yapısı %a/ %arrayyalnızca değeri bu dil için minimum olan dil / URL çiftlerini içerir. Ardından minimum değerler azalan düzende sıralanır ve ilki, küresel maksimum ve %a/ için filtre koşulu olarak kullanılır %array.
Heiko Oberdiek

2

Python 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())

Standart giriş:

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

Ve 551 karakterde sıkıştırmaya başlamadan önce sahip olduğum şey bu:

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

C # - 628

İşte size daha uzun bir alternatif 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]));}}}}

Başlangıçta ile max / min kullanarak hafif kod azaltma kazanmış olabilir düşündüm DataTable, ama DataTable(satır / sütun / görünüm) oluşturmak için gerekli türleri ne yazık ki, çok fazla uzunluk ekleyin. Golf kodlamak için yeniyim, belki biri daha da azaltmak mümkün olacaktır. Hala eğlenceli bir meydan okuma.


1

dg - 286 281 260 251 218 bayt

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

Misal:

$ 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

Ungolfed sürümü:

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

S: Ne halt dg?
C: Scala'nın JVM'leri gibi derlediği CPython bayt kodunu derleyen bir programlama dili. Bu aslında dg'nin Python 3 için alternatif bir sözdizimi olduğu anlamına gelir. Varolan tüm kütüphaneleri de kullanmanızı sağlar.

Burada daha fazla bilgi (bir öğretici bile!): Https://pyos.github.io/dg


Bunu bir dosyaya koyarsam, sadece 217 bayt (Linux satır sonları) vardır
Thomas Weller

@ThomasW. Tuhaf! Kullanılması cat langs.dg | wc -cben 218 olsun!
rubik

Belki sondaki satırsonu veya sondaki satır sonu yok?
Yapımcı

@Yaratıcı olabilir, ancak yeni bir satır ile kaydetmemeliyse de
rubik

1

Asi - 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]]]]

un-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]]
    ]
]

Kullanım örneği:

$ 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

C # - 515

Bağımsız değişken olarak bir dosya adı bekler

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);}}}

İlk olarak C # programımı düz ileri olacak şekilde tasarladım, çünkü bir tür referans programım olmasını istedim. Ama sonra ben de yarışmaya atlamaya karar verdim ve golf oynadım. Bu, kodun önceki sürümlerinden biridir + bazı yorumlar:

// 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);
            }
        }
    }
}

Diskimdeki 515 dosya boyutunda bir bayt sırası işareti var gibi görünüyor. Buradan kopyala / yapıştır sadece 512 bayttır.
Thomas Weller

0

C # - 460 359

DataTableÇözümümün ne kadar hantal olduğunu fark ettikten sonra , Linq kullanarak aşağıdaki örneği oluşturdum. Önceki çözümümle aynı metodolojiyi kullanıyor.

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);
        }
    }
}

Linq için hala oldukça yeniyim, bu yüzden bu ifadelerin daha da azaltılabileceğinden neredeyse eminim.

Sorunuzdan, tek bir maksimum uzunluk çözümü olup olmadığı net değil. Yanıtlarım için tek bir maksimum nokta olduğu varsayımını kullandım (yani, maksimum 210 GolfScript varsa, döndürülen Tek maksimum kayda göre başarısız olabilir). Heiko'nun çözümü de aynı meseleye sahip olacaktı. Bunu düzeltmek için, her dil için minima'yı kontrol etmek üzere bağlı bir maxima listesi içeren başka bir adım eklememiz gerekir.


1
Bana öyle geliyor ki, f'yi Item3 (s [2] yerine) olarak kaydedebilir ve ardından f1Item3 öğesini Konsol'a Item1 ve Item2'yi yeniden birleştirmeye gerek kalmadan yazabilirsiniz.
Thomas Weller

Gereksinimlerin açıklığa kavuşturulması için teşekkürler. Gerçeklikten türetilen birisinin (tecrübesiz, açıkçası) 210 karakterli bir GolfScript yazması olabileceğini söyleyebilirim.
Thomas Weller

1
İlk foreach döngüsünü LINQ'ya dönüştürürseniz, daha da kısalır: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);}}}
Thomas Weller

@ThomasW .: Split için iyi fikir. Foreach loop dönüşümü için teşekkürler, ben bunu ilk başta ekleyerek hakkında düşünmüştü ama bu şekilde izin kullanabileceğini bilmiyordum.
grovesNL

Senin sorgu :) ve aynı zamanda böyle basit girişi için başarısız olur mu olduğunu anlamaya başlıyoruz düşünüyorum: Golfscript 100 ..., C# 1 ..., C# 200 .... Bu muhtemelen biraz yeniden işleme ihtiyaç duyuyor
Thomas Weller

0

C ++ - 535

Potansiyel kazananlar olarak her bir dilin yalnızca en kısa cevaplarını seçtikten sonra yalnızca en uzun pozisyona bağlı cevapları verir.

#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;
}

Golf (bazı diller kadar okunamaz):

#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;}

Çıktınızı beklenen çıktıya göre kontrol ettiniz mi? 8 satır giriş ile çıkış olarak sadece 3 satır verecektir. Programınız her şeyi çıktı gibi görünüyor.
Thomas Weller

@ThomasW. Oh, o kısmı yanlış anladım. Şimdilik kaldıracağım.

@ThomasW. Bu doğru görünüyor mu?

Bunu bir dosyaya koyarsam 535 değil 540 bayt alırım. Uzunluğunu iki kez kontrol edebilir misiniz, lütfen?
Thomas Weller

535 karakterdir. İkimiz de doğruyuz. İstersen değiştirebilirim.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.