Здравствуйте, FR, Вы писали:
FR>По объему кода, вот простейшая программка считывает файл построчно и выводит его в другой файл отсортированным по строкам:
Функции readlines в библиотеке .НЕТ нет по этому мы ее напишем.
static IEnumerable<string> Lines(Stream stream)
{
using (StreamReader reader = new StreamReader(stream))
for (string line; (line = reader.ReadLine()) != null; )
yield return line;
}
FR>arr = open("test.txt").readlines()
FR>arr.sort()
List<string> lines;
using (Stream file = File.OpenRead("text.txt"))
lines = new List<string>(Lines(file));
lines.Sort();
FR>out = open("out.txt", "w")
FR>for line in arr:
FR> print >> out, line,
using (TextWriter file = File.CreateText("out.txt"))
foreach (string line in lines)
file.WriteLine(file);
Отсутствие типизации и необходимости объявлять переменные в питоне я считаю большим недостатком.
FR>Суммирование чисел из файла(в каждой строке файла одно число):
Опять библиотека...
Да будут операторы
delegate T Operator<T>(T l, T r);
interface IMathOperators<T>
{
Operator<T> Add { get; }
Operator<T> Sub { get; }
Operator<T> Mul { get; }
Operator<T> Div { get; }
}
class MathOperatorsInt : IMathOperators<int>
{
public Operator<int> Add { get { return delegate(int l, int r) { return l + r; }; } }
public Operator<int> Sub { get { return delegate(int l, int r) { return l - r; }; } }
public Operator<int> Mul { get { return delegate(int l, int r) { return l * r; }; } }
public Operator<int> Div { get { return delegate(int l, int r) { return l / r; }; } }
}
static Dictionary<Type, object> MathOperatorsMap = new Dictionary<Type, object>();
static IMathOperators<T> MathOperators<T>()
{
return (IMathOperators<T>)MathOperatorsMap[typeof(T)];
}
static Program()
{
MathOperatorsMap.Add(typeof(int), new MathOperatorsInt());
}
Теперь сделаем недостающие функции
delegate T Parse<T>(string s);
static IEnumerable<T> Map<T>(Stream stream)
{
Parse<T> parse = (Parse<T>)Delegate.CreateDelegate(typeof(Parse<T>),
typeof(T), "Parse");
foreach (string line in Lines(stream))
yield return parse(line);
}
static T Sum<T>(IEnumerable<T> numbers)
{
Operator<T> add = MathOperators<T>().Add;
T val = default(T);
foreach (T number in numbers)
val = add(val, number);
return val;
}
FR>FR>import sys, itertools
FR>print sum(itertools.imap(int, open("in.txt")))
FR>
using (Stream file = File.OpenRead("text.txt"))
Console.WriteLine(Sum(Map<int>(file)));
FR>Другой пример я уже приводил Владу, простейший калькулятор(он из темы где вы с Владом спорили и ты делал этот же калькулятор на плюсах
ссылки к сожалению не помню)
Это тоже решается библиотекой.
А самое главное что все что ты привел очень синтетические задачи не имеющие с реальностью ничего общего.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>