Action disabled: source

Hoja de ayuda con tareas comunes de varios tipos en distintos lenguajes de programación.

Consultas sobre secuencias de datos

En los siguientes ejemplos:

  • seq es una variable de tipo S representando una secuencia de datos de tipo T
  • v y w son dos datos del tipo T o de un tipo compatible con T
  • P es un predicado de forma F: (T)→{true,false}

exists / contains

¿Existe el dato v en la secuencia?

C++

bool exists= find (begin(seq), end(seq), v) != end(seq);

Javascript
PHP
Python

match / find

¿Qué dato en la secuencia cumple P?

C++

 Iterator m = find_if (begin(seq), end(seq), P); // m == end(seq) si ninguno

Javascript
Python

 // (Python ≥ 2.6)
next((x for x in seq if P(x)), None)

minimum (/maximum)

Dada una clave F, ¿cuál es el mínimo en la secuencia acorde a F?

C++

 Iterator m = min_element (begin(seq), end(seq), F); // m apunta al mínimo

Javascript
Mathemathica
PHP
Python

 value m = min (s, key=F)

fold / reduce

Reducir (“left-fold”) la secuencia a un valor empezando con v0
Ver: fold.

C++

result = accumulate (begin(seq), end(seq), v0, F);

Javascript

result = seq.reduce (v0, F); // seq es un Array

Mathematica

fold_left F v0 seq;  // F toma argumentos como tupla

PHP

value = array_reduce (seq, v0, F); // F es un nombre o callback de PHP

Python

result = reduce(seq, v0, F)

E/S de datos

En los siguientes ejemplos seq es una variable que denota una secuencia de datos y input es una variable que denota contenidos de un tipo de datos ingresado por teclado.

Leer secuencias de datos desde la entrada estándar

C++

// alternativa 1, usando un bucle
while ( cin >> input ) { seq.push_back(input); } // input es de tipo T
// alternativa 2, usando iteradores
copy (istream_iterator<T>(cin), istream_iterator<T>(), back_inserter(seq));

Javascript
Python

Escribir secuencias de datos a la salida estándar

C++

// alternativa 1, usando un bucle
for (Iterator i= begin(seq); i != end(seq); ++i) { cout << *i; } // Iterator es el tipo de begin(seq)
// alternativa 2, usando iteradores
copy (begin(seq), end(seq), ostream_iterator<T>(cout, " ")); 
// nota: agrega un separador extra al final de la secuencia

Javascript
Python

Leer argumentos entregados al programa

C/C++

int main (int argc, char **argv) { 
    // argc = numero de argumentos 
    // argv = puntero a cadenas de texto conteniendo cada argumento
}

Javascript
PHP
Python

import sys
sys.argv

¿Existe el archivo en "ruta_archivo"?

C++ (+POSIX)

 

Javascript
PHP

if (file_exists(ruta_archivo) === true) { ... }

Python