[AOJ] Tri décroissant dans différentes langues

J'ai trouvé un site de soumission de problèmes de programmation et de notation fourni par l'Université Aizu appelé AIZU ONLINE JUDGE et c'était amusant, donc j'ai des problèmes dans plusieurs langues. J'ai décidé de le résoudre.

Sélectionnez 5 langages: C ++, python, php, sqlite3, common lisp. Le langage que j'utilise habituellement est le C ++, et j'ai écrit d'autres langages lors de recherches en ligne.

Cette fois, le problème est 0001 Liste des 3 meilleures collines.

problème

List of Top 3 Hills

Il existe 10 données qui représentent la hauteur de la montagne sous forme de nombre entier en mètres. Créez un programme qui lit les 10 données, en sort 3 des plus élevées et termine.

Input

Hauteur de la montagne 1 (entier) Hauteur de la montagne 2 (entier) . . Hauteur de la montagne 10 (entier)

Constraints

0 ≤ hauteur de la montagne ≤ 10000

Output

Hauteur de montagne la plus élevée La hauteur de la deuxième plus haute montagne La troisième plus haute montagne

Sample Input

1819 2003 876 2840 1723 1673 3776 2848 1592 922

Output for the Sample Input

3776 2848 2840

Pour le moment, écrivez quelque chose qui renvoie la réponse correcte à l'entrée d'échantillon. Le tri est inclus en standard dans toutes les langues, je n'ai donc pas eu à écrire l'algorithme moi-même.

Répondre

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;
    //Trié automatiquement lorsque vous insérez un élément dans l'ensemble
    heightSet.insert(val);
  }
 
  //Inverser pour accéder par ordre décroissant_Utiliser l'itérateur
  MySet::reverse_iterator rit = heightSet.rbegin();
  for(int i = 0; i < 3; ++i)
  {
    cout << *rit << endl;
    ++rit;
  }
  return 0;
}

Si vous utilisez le conteneur multiset de STL, il sera automatiquement trié lorsque vous insérez un élément, vous pouvez donc l'ignorer un peu.

python


#Créer un tableau
n = list()

for var in range(0, 10):
  #Lire une ligne à partir de l'entrée standard
  #Diffuser en int
  n.append( int(raw_input()) )
  
#Trier le tableau par ordre décroissant
n.sort(reverse = True)
  
for var in range(0, 3):
  print n[var]

J'ai été impressionné de pouvoir l'écrire brièvement avec python.

PHP


<?php
$hi = fopen('php://stdin', "r");
$ho = fopen('php://stdout', "w");

#Créer un tableau vide
$arr = array();

#Définir les données à partir de l'entrée standard
for($i = 0; $i < 10; $i++)
{
	fscanf($hi, "%d", $arr[]);
}

#Tri décroissant
rsort($arr);

#production
for($i = 0; $i < 3; $i++)
{
	fwrite($ho, sprintf("%d\n", $arr[$i]));
}

fclose($ho);
fclose($hi);

Cela ressemble au langage c sauf pour ajouter $ à la variable.

sqlite3


--Créer une table
create table tbl(height integer);

--Lire les données d'un fichier texte
.import data.txt tbl

-- 'tbl'De'height'Trier par ordre décroissant par champ et lire 3 lignes
select * from tbl order by height desc limit 3;

Je ne savais pas comment mettre des informations dans un enregistrement à partir d'une entrée standard dans sqlite3, donc je lis à partir d'un fichier.

Common Lisp


;;Recevoir n fois l'entrée standard et ajouter à la liste
(defun input (lst n)
	(cond
		((eq (length lst) n)
			lst
		)
		(t
			(input (append lst (list (read)) ) n )
		)
	)
)

;;Créer un tableau partiel des n premiers éléments de la 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))	;Éléments de la liste de sortie séparés par des sauts de ligne
	(gettop
		(sort (input () 10) #'>)	;Créer une liste à partir de l'entrée standard et trier par ordre décroissant
		3							;Créez les trois premières listes
	)
)

CommonLisp était trop étranger pour que je m'habitue au type procédural, et cela a pris beaucoup de temps.

Recommended Posts

[AOJ] Tri décroissant dans différentes langues
HMAC en plusieurs langues
Tri décroissant avec mongodb en python
AOJ Trier I-
Écrire des classes (ou de type classe) dans divers langages de programmation
Représentation numérique des jours dans différentes langues
Tri à bulles en Python
Tri personnalisé en Python3
Représentation de séquences de Fibonacci à l'aide d'expressions lambda dans différentes langues
Rivaliser pour les E / S de fichiers dans différentes langues et comparer les vitesses
Hello World dans divers langages [Python / PHP / Java / Perl / Ruby]
J'ai implémenté N-Queen dans différentes langues et mesuré la vitesse
10 langages de programmation les plus populaires en 2020
Trier naturellement le chemin en Python
Insérer une sorte d'exercices AOJ
Trier par date en python
J'ai créé un programme de sortie de table de nombres premiers dans différentes langues