Ich habe eine Website zur Einreichung und Bewertung von Programmierproblemen gefunden, die von der Aizu University bereitgestellt wurde und [AIZU ONLINE JUDGE] heißt (http://judge.u-aizu.ac.jp/onlinejudge/index.jsp). Es hat Spaß gemacht, daher habe ich Probleme in verschiedenen Sprachen. Ich habe beschlossen, es zu lösen.
Wählen Sie 5 Sprachen aus: C ++, Python, PHP, SQLite3, Common Lisp. Die Sprache, die ich normalerweise benutze, ist C ++, und ich habe bei der Online-Suche andere Sprachen geschrieben.
Dieses Mal ist das Problem 0001 Liste der Top 3 Hügel.
List of Top 3 Hills
Es gibt 10 Daten, die die Höhe des Berges als Ganzzahl in Metern darstellen. Erstellen Sie ein Programm, das die 10 Daten liest, 3 von den höchsten ausgibt und fertig ist.
Input
Gebirgshöhe 1 (Ganzzahl) Gebirgshöhe 2 (Ganzzahl) . . Gebirgshöhe 10 (Ganzzahl)
Constraints
0 ≤ Gebirgshöhe ≤ 10000
Output
Höchste Berghöhe Die Höhe des zweithöchsten Berges Die dritthöchste Berghöhe
Sample Input
1819 2003 876 2840 1723 1673 3776 2848 1592 922
Output for the Sample Input
3776 2848 2840
Schreiben Sie vorerst etwas, das die richtige Antwort auf die Beispieleingabe zurückgibt. Die Sortierung ist standardmäßig in allen Sprachen enthalten, sodass ich den Algorithmus nicht selbst schreiben musste.
C++
#include <iostream>
#include <set>
using namespace std;
int main() {
typedef std::multiset<int> MySet;
MySet heightSet;
for(int i = 0; i < 10; ++i)
{
int val;
cin >> val;
//Automatisch sortiert, wenn Sie ein Element in set einfügen
heightSet.insert(val);
}
//Umkehren zum Zugriff in absteigender Reihenfolge_Verwenden Sie den Iterator
MySet::reverse_iterator rit = heightSet.rbegin();
for(int i = 0; i < 3; ++i)
{
cout << *rit << endl;
++rit;
}
return 0;
}
Wenn Sie den Multiset-Container von STL verwenden, wird dieser beim Einfügen eines Elements automatisch sortiert, sodass Sie ihn ein wenig überspringen können.
python
#Erstellen Sie ein Array
n = list()
for var in range(0, 10):
#Lesen Sie eine Zeile von der Standardeingabe
#Cast to int
n.append( int(raw_input()) )
#Sortieren Sie das Array in absteigender Reihenfolge
n.sort(reverse = True)
for var in range(0, 3):
print n[var]
Ich war beeindruckt, dass ich es mit Python kurz schreiben konnte.
PHP
<?php
$hi = fopen('php://stdin', "r");
$ho = fopen('php://stdout', "w");
#Erstellen Sie ein leeres Array
$arr = array();
#Stellen Sie die Daten von der Standardeingabe ein
for($i = 0; $i < 10; $i++)
{
fscanf($hi, "%d", $arr[]);
}
#Absteigende Sorte
rsort($arr);
#Ausgabe
for($i = 0; $i < 3; $i++)
{
fwrite($ho, sprintf("%d\n", $arr[$i]));
}
fclose($ho);
fclose($hi);
Es fühlt sich wie eine c-Sprache an, außer dass der Variablen $ hinzugefügt wird.
sqlite3
--Eine Tabelle erstellen
create table tbl(height integer);
--Lesen Sie Daten aus einer Textdatei
.import data.txt tbl
-- 'tbl'Von'height'Sortieren Sie in absteigender Reihenfolge nach Feld und lesen Sie 3 Zeilen
select * from tbl order by height desc limit 3;
Ich wusste nicht, wie ich Informationen aus Standardeingaben in sqlite3 in einen Datensatz einfügen soll, also lese ich aus einer Datei.
Common Lisp
;;N-mal von der Standardeingabe empfangen und zur Liste hinzufügen
(defun input (lst n)
(cond
((eq (length lst) n)
lst
)
(t
(input (append lst (list (read)) ) n )
)
)
)
;;Erstellen Sie ein Teilarray der ersten n Elemente der Liste
(defun gettop (lst n)
(if (or (= n 0) (null lst))
nil
(cons (car lst)
(gettop (cdr lst) (- n 1))
)
)
)
(mapcar #'(lambda (x) (format t "~A~%" x)) ;Ausgabelistenelemente durch Zeilenumbrüche getrennt
(gettop
(sort (input () 10) #'>) ;Erstellen Sie eine Liste aus Standardeingaben und sortieren Sie sie in absteigender Reihenfolge
3 ;Erstellen Sie die ersten drei Listen
)
)
CommonLisp war zu fremd für mich, um mich an den Prozedurtyp zu gewöhnen, und es dauerte viel Zeit.
Recommended Posts