Перейти к содержимому

Фотография

Основы ПрограмированияПотренируемся на ночь?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 171

#81
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений

ну там говорится что Гвидо хочет это убрать - значит будет убрано (надеюсь не надо говорить кем является Гвидо для Питон комьюнити), причем в последнее время он об этом говорит с удивительным постоянствои... Насчет моего английского не беспокойся, вроде как работаю в конторе с рабочим языком английским и все нормально.

Нет, там нет никаких признаков, что "значит будет убрано"! Теперь ты еще для него "удивительное постоянство" придумал. Если у тебя, как ты заявляешь, с английским все нормально, в таком случае у тебя с порядочностью далековато от нормального. Для удобства читателей привожу дословно, как был задан вопрос в интервью с Гвидо ван Россумом:

If you could change some things that have been done in the langage, what would it be?


Нужны ли еще дополнительные пояснения?

Также сообщаю, что в одной из последних версий документации к (Python Reference Manual, 30 March 2005, Release 2.4.1 - кстати, документацию и сам интерпретатор языка можно получить свободно) лямбда-выражения полноправно существуют, и нет никаких указаний на какое-либо исключение или замену их "чем-то другим" в будущем.

я вообще никому ничего не обязан - сюда хожу исключительно для того чтобы псомотреть интересуются ли в КЗ функциональным программированием. Судя по всему у нас даже не знают что это такое, к сожалению.

Нет причин сожалеть - вместо сожалений достаточно открыть свою тему в другой ветке форума (и может, заинтересуются).

где я написал что учавствую в конкурсе? водички попей. Просто ты сделал неправильное предположение, я тебя поправил

Однако свой вариант ответа на данные мной условия задачи ты предлагал.
Что касается твоей поправки (насчет исключения лямбда-выражений из будущих версий языка, и якобы непереносимости функции на будущие версии) - она неверна, и в ней ты использовал нечестные методы доказательства.

Сообщение отредактировал Visual1: 24.08.2005, 01:42:42

  • 0

#82
Rus++

Rus++
  • Завсегдатай
  • 106 сообщений

Нет, там нет никаких признаков, что "значит будет убрано"! Теперь ты еще для него "удивительное постоянство" придумал


в Гугл, тогда не будешь так рефлексировать. Блоги читай, особенно про Python 3000, fate of reduce, etc... Потому как судьба Питона в руках коммьюнити, а не какого-то комитета, что народ во главе с вождем скажет, так оно и будет...

Однако свой вариант ответа на данные мной условия задачи ты предлагал.

это не значит что я где-то учавствую, задачка интересная, потому что лучше всего решается с помощью подходов из функционоального программированя, но очень легкая - я в таких "конкурсах" не учавствую :smoke:


Что касается твоей поправки (насчет исключения лямбда-выражений из будущих версий языка, и якобы непереносимости функции на будущие версии) - она неверна, и в ней ты использовал нечестные методы доказательства.

поправка же была про фразу "Вы привели свой вариант в следующем виде (очевидно, в соответствии с требованиями синтаксиса): ". Насчет лямбда, опять, в Гугл, ключевые слова я дал.

Если кому интересно, есть такая вот задачка - есть массив слов, надо найти все слова которые повторяются.
  • 0

#83
BAD

BAD

    Заядлый П.П.

  • В доску свой
  • 5 727 сообщений
Гайз а может вам в личку перейти или отдельный топик создать. Как я понимаю такой уровень разборок уже не совсем соответствует названию темы.
  • 0

#84
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений

Если кому интересно, есть такая вот задачка - есть массив слов, надо найти все слова которые повторяются.


Самое простое и эффективное, что приходит в голову - упорядочить эти слова (естественно не сам массив, упорядочивать надо индексы), и потом пройтись по упорядоченному массиву и найти одинаковые слова. сложность O(n*log(n)) + O(n) кажется.
  • 0

#85
Rus++

Rus++
  • Завсегдатай
  • 106 сообщений

Если кому интересно, есть такая вот задачка - есть массив слов, надо найти все слова которые повторяются.


Самое простое и эффективное, что приходит в голову - упорядочить эти слова (естественно не сам массив, упорядочивать надо индексы), и потом пройтись по упорядоченному массиву и найти одинаковые слова. сложность O(n*log(n)) + O(n) кажется.


правильно :) есть правда еще способ - строить хэш, где ключи - слова из массива, значение - количество вхождений в масииве. За один проход строится хэш, потом проход осуществляется по хэшу где выбираются слова со значением больше 1. При правильно подобранной хэш функции должно быть быстрее...
  • 0

#86
v04bvs

v04bvs
  • В доску свой
  • 2 062 сообщений

Если кому интересно, есть такая вот задачка - есть массив слов, надо найти все слова которые повторяются.


Самое простое и эффективное, что приходит в голову - упорядочить эти слова (естественно не сам массив, упорядочивать надо индексы), и потом пройтись по упорядоченному массиву и найти одинаковые слова. сложность O(n*log(n)) + O(n) кажется.


правильно :D есть правда еще способ - строить хэш, где ключи - слова из массива, значение - количество вхождений в масииве. За один проход строится хэш, потом проход осуществляется по хэшу где выбираются слова со значением больше 1. При правильно подобранной хэш функции должно быть быстрее...

У меня была подобная идея, но я её не додумал =)
У меня родилась ещё одна идея.
Строим бинарное дерево. В узлах храним слова и количество появлений. Как только встречается второе слово, помещаем в список. После построения у нас будет список со всеми нужными словами :) И не нужен второй проход.
  • 0

#87
Rus++

Rus++
  • Завсегдатай
  • 106 сообщений

Строим бинарное дерево. В узлах храним слова и количество появлений. Как только встречается второе слово, помещаем в список. После построения у нас будет список со всеми нужными словами :) И не нужен второй проход.


это улучшенное первое решение, бинарное дерево часто используется для сортировки. Будет работать точно... можно для ускорения использовать кучи, но это уже мелочи...
  • 0

#88
KFC

KFC
  • Частый гость
  • 99 сообщений
а вот еще задачка:

есть массив последовательностей из 5 чисел. Требуется эффективно сравнить входное значение из 5 чисел с каждой последовательностью из массив и дать кол-во символов, имеющих одинаковое значение и позицию от начала.

пример:

массив
12345
12346
12344
12374

переменная
12345

выход
5
4
4
3
  • 0

#89
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений
Здесь тоже хорошо бы использовать современный высокоуровневый язык, ориентированный на обработку регулярных выражений - тот же самый Python или Perl. Но что-то народ неактивно участвует... За весь вечер ни одного отклика. Видимо, боятся - как бы не начали их загружать вопросами на засыпку, знаете ли вы, кто такой Гвидо ван Россум? :-) И учить уму-разуму, что надо больше читать Гугл и всякие там блоги (а не документацию по языку и компилятору).

Ну тогда давайте вернемся к старому, доброму Си. :laugh:

#include <stdio.h>

#define NUM_OF_ARRAYS  4
#define ARR_SIZE            5

int main()
{
   int arr[NUM_OF_ARRAYS][ARR_SIZE] = {{1,2,3,4,5},{1,2,3,4,6}, {1,2,3,4,4}, {1,2,3,7,4}};
   int mask[ARR_SIZE] = {1,2,3,4,5};
   static int counters[NUM_OF_ARRAYS];    //Вы конечно знаете и легко можете объяснить, зачем тут static, не так ли? :-)
   int i, j;

   for (i = 0; i < NUM_OF_ARRAYS; i++)
   {
      for (j = 0; j < ARR_SIZE; j++)
      {
        if (arr[i][j] == mask[j])
          counters[i] +=1;
        else
          break;
      }
      printf("%d\n", counters[i]);
   }
 return 0;
}

  • 0

#90
ilya666

ilya666
  • Частый гость
  • 77 сообщений

s = 0
(1..20).each { | v | s = s + v }
if s < 100
  print "less than 100\n"
else
  print "more than 100\n"
end


что вы такое говорите? Ruby -- это неправильный Smalltalk:

Transcript show: 
	(((5 to: 20) inject: 0 into: [:x :next | x + next ]) < 100 
  ifTrue: ['less than 100'] 
  ifFalse: ['more than 100']).

  • 0

#91
ilya666

ilya666
  • Частый гость
  • 77 сообщений
[quote name='Rus++' date='22.08.2005, 14:52'][quote name='Visual1' date='20.08.2005, 00:38']
В Питоне ламбда функциями не советуют пользоваться так как в следующих версиях они будут заменены на нечто другое - значит решение не переносимое на следующие версии.
[/QUOTE]

Чувак! Это был первоапрельский стеб!
  • 0

#92
ilya666

ilya666
  • Частый гость
  • 77 сообщений

а вот еще задачка:

есть массив последовательностей из 5 чисел. Требуется эффективно сравнить  входное значение из 5 чисел с каждой последовательностью из массив и дать кол-во символов, имеющих одинаковое значение и позицию от начала.

пример:

массив
12345
12346
12344
12374

переменная
12345

выход
5
4
4
3


На языке программирования J (http://www.jsoftware.com/)
x=: 1 2 3 4 5; 1 2 3 4 6; 1 2 3 4 4; 1 2 3 7 4
y=:1 2 3 4 5
+/"1 ((>x) ="1 y)

  • 0

#93
ilya666

ilya666
  • Частый гость
  • 77 сообщений

Чувак! Это был первоапрельский стеб!


Торможу, блин, стебом было вот что: http://list.cs.brown...ril/008382.html

А Гвидо был вполне серьезен: http://www.artima.co...sp?thread=98196
  • 0

#94
yedyge

yedyge
  • Свой человек
  • 879 сообщений
вы чем меряетесь? знанием подходящего лучше инструмента (быстрота разработки и ёмкость/буква) или умением составить лучший алгоритм (минимум выч.операций)? и то, и другое весьма полезно, но с таким двусмысленным критерием оптимальности спорить бестолку.
  • 0

#95
KFC

KFC
  • Частый гость
  • 99 сообщений
yedyge:

а по сути есть что добавить ? :smoke:
  • 0

#96
yedyge

yedyge
  • Свой человек
  • 879 сообщений
двигаться без критериев ломает :smoke:
  • 0

#97
Юра Богорт

Юра Богорт
  • Гость
  • 30 сообщений

#!/usr/bin/perl



sub abbr{join '',$_[0]=~/\b(\w)/g;}



print abbr("Simple Mail Transfer Protocol");


  • 0

#98
KFC

KFC
  • Частый гость
  • 99 сообщений

двигаться без критериев ломает :smoke:

критерий один - сложность О(1) и детерминизм :lol:
  • 0

#99
Юра Богорт

Юра Богорт
  • Гость
  • 30 сообщений
#!perl

my @arr = qw/12345 12346 12344 12374/;
my $ran = '12345';

for my $num (@arr)
{
	
	my $i = 0;
	for my $ind ( 0..( length $ran )  - 1 )
	{

  	$i++ if ( ( substr $ran, $ind, 1 )  eq ( substr $num, $ind, 1 ) );
	}
	print $i;
}


#!perl

my @arr = qw/12345 12346 12344 12374/;
my $ran = '12345';
my @spl = split '',$ran;

for my $num (@arr)
{

	my $sum = 0;
	my $i = 0;
	while ( $num =~ m/($spl[$i++])|./g )
	{
  $sum++ if $1;
	}

print $sum;
}

Сообщение отредактировал Юра Богорт: 21.09.2005, 00:47:21

  • 0

#100
asr

asr
  • Модератор
  • 24 325 сообщений
#!perl

my @arr = qw/12345 12346 12344 12374/;
my $ran = '12345';
my @spl = split '',$ran;

for my $num (@arr)
{

	my $sum = 0;
	my $i = 0;
	while ( $num =~ m/($spl[$i++])|./g )
	{
  $sum++ if $1;
	}

print $sum;
}
На две переменные больше.....

Сообщение отредактировал asr: 21.09.2005, 09:16:29

  • 0


Количество пользователей, читающих эту тему: 2

пользователей: 0, неизвестных прохожих: 2, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.