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

Фотография

Развить Мышление


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

#41
webman1986

webman1986
  • В доску свой
  • 2 077 сообщений


А вот простенькая задачка

Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.


Любой говорите? Perl пойдет?

($a,$b) = ($b,$a);



:D

можно так же в ассемблере) ли и в других\языках с использованием поинтеров
  • 0

#42
idaa

idaa
  • Частый гость
  • 60 сообщений

Любой говорите? Perl пойдет?

($a,$b) = ($b,$a);

:D

Самое правильное решение, причем для либых типов с их сохранением.
Аналогично решение записывается в Python, Ruby, Lua, F#, Ocaml'e

Большиству остальных довольствоваться только частными случаями - на каждый
обмен свой костыль :-)

можно так же в ассемблере) ли и в других\языках с использованием поинтеров

Через стек можно махнуть значения в Asm, Forth, всяких стековых IL'ах (типа нетовского)
С поинтерами будут работать только частные случаи, да и то под вопросом
  • 0

#43
russo_turisto

russo_turisto
  • Постоялец
  • 359 сообщений


А вот простенькая задачка

Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.


Любой говорите? Perl пойдет?

($a,$b) = ($b,$a);



:D


C этим языком не знаком, а если дизасемблировать ехешник то я думаю компилятор все равно третью переменную использует.

Вот еще несколько вариантов решения

Код C#
int x = 1;
int y = 45;
x = (y + x) - (y = x);


Код C#	 
push(a);
a = b;
pop(b);


Код Pascal
x:=x*y;
y:=x div y;
x:=x div y;


Код Pascal
x:=round((x/100+y)*100);
y:=x mod 100;
x:=x div 100;


a := a xor b;
b := b xor a;
a := a xor b;

Мне нравиться метод с ипользованием стека, три такта процессора занимает.

наверное хватит, эту задачку хорошо студентам давать.

Сообщение отредактировал russo_turisto: 27.09.2011, 15:48:10

  • 0

#44
idaa

idaa
  • Частый гость
  • 60 сообщений

C этим языком не знаком, а если дизасемблировать ехешник то я думаю компилятор все равно третью переменную использует.

Perl .... ехешник ... :faceoff:

Код C#	 
push(a);
a = b;
pop(b);
Компилятор C# не нашел таких страшных слов у себя

Код Pascal
x:=x*y;
y:=x div y;
x:=x div y;
Fail> y := 0


Код Pascal
x:=round((x/100+y)*100);
y:=x mod 100;
x:=x div 100;
Fail> x := 100 y := 0

Итого 3 из 5 не работают в принципе, а последний работает только на целых

Мне нравиться метод с ипользованием стека, три такта процессора занимает.

не нашел такого

.... эту задачку хорошо студентам давать.

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

#45
webman1986

webman1986
  • В доску свой
  • 2 077 сообщений
Вот вам задачка, напишите Квайн
  • 0

#46
idaa

idaa
  • Частый гость
  • 60 сообщений

Вот вам задачка, напишите Квайн

ага... цепной :D
  • 0

#47
Visual1

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

Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.

Вот как это можно сделать на PHP (или, как его в народе называют, ПХП):

$x = 4;  //вместо чисел можно задавать и строковые константы,
$y = 5;  //например, "Да" и "Нет"

list($y, $x) = array($x, $y);

  • 0

#48
drptz

drptz
  • Свой человек
  • 766 сообщений


Даны две переменные A и B.
Написать с пом. любого языка програмирования как поменять содержимое переменных друг с другом не используя третью переменную.

Вот как это можно сделать на PHP (или, как его в народе называют, ПХП):

$x = 4;  //вместо чисел можно задавать и строковые константы,
$y = 5;  //например, "Да" и "Нет"

list($y, $x) = array($x, $y);


если дизасемблировать экзешник там не будет использоваться третья переменная ?

:p

Сообщение отредактировал drptz: 06.10.2011, 09:24:11

  • 0

#49
Visual1

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

Скрытый текст


если дизасемблировать экзешник там не будет использоваться третья переменная ?

:p

Для работы данного примера даже создавать экзешник не требуется, и что же там дизассемблировать?
:p
  • 0

#50
drptz

drptz
  • Свой человек
  • 766 сообщений

Для работы данного примера даже создавать экзешник не требуется, и что же там дизассемблировать?
:p


Так ведь можно же !

Хотя...

Изображение


:D
  • 0

#51
Visual1

Visual1
  • В доску свой
  • 1 198 сообщений
Еще раз, для работы данного простого скрипта никакой экзешник создавать не требуется. Так что ваш вопрос о его дизассемблировании имеет примерно такой же смысл, как и "шутка юмора", показанная на вашей же картинке.
  • 0

#52
drptz

drptz
  • Свой человек
  • 766 сообщений

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


Спасиба, кэп!

:faceoff:
  • 0

#53
Visual1

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

Спасиба, кэп!

:faceoff:

На здоровье. И если я кэп, то на правах кэпа напоминаю: построить троллейбус из буханки хлеба ( == дизассемболировать экзешник) пытались вы, а не я.

Лучше не засоряйте тему картинками с дебильным юмором. Против вас же и обернется.

:p

Ваш К.О.

Сообщение отредактировал Visual1: 07.10.2011, 13:08:50

  • 0

#54
drptz

drptz
  • Свой человек
  • 766 сообщений



Спасиба, кэп!

:faceoff:

На здоровье. И если я кэп, то на правах кэпа напоминаю: построить троллейбус из буханки хлеба ( == дизассемболировать экзешник) пытались вы, а не я.

Лучше не засоряйте тему картинками с дебильным юмором. Против вас же и обернется.

:p

Ваш К.О.


Где я пытался?
Вы помимо к.о. еще и модератор?
Что обернется и куда?
  • 0

#55
Visual1

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

Где я пытался?

Ах да, не пытался. Только хотел попытаться. :D

Вы помимо к.о. еще и модератор?

Я не модератор (пока). Но предложить не засорять тему дебильными картинками я могу, или нет?

Что обернется и куда?

Вы уже не маленький, должны сами понимать. Или все еще маленький? Тогда марш в песочницу! Не мешай взрослым дядям разговаривать.
  • 0

#56
dzid

dzid
  • Свой человек
  • 939 сообщений
О да, щас наш MSDOS за оффтопик и выхватит... Модераааатор...

Однако же задачка. Дано целое неотрицательное число. Надо проверить, является ли оно степенью двойки.
  • 0

#57
idaa

idaa
  • Частый гость
  • 60 сообщений

Однако же задачка. Дано целое неотрицательное число. Надо проверить, является ли оно степенью двойки.

Однако же однострочник
let isPowerOf2 = (Seq.scan (fun s _ -> 2 * s) 1 {0..29} |> set).Contains

Сообщение отредактировал idaa: 11.10.2011, 09:24:20

  • 0

#58
Visual1

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

О да, щас наш MSDOS за оффтопик и выхватит... Модераааатор...

О да, уже из Аааавстралии кое-кто слюной брызжет. Ну и зря.

Однако же задачка. Дано целое неотрицательное число. Надо проверить, является ли оно степенью двойки.

public static bool IsPower2(uint num)
{
   return (num & -num) == num;
}

  • 0

#59
idaa

idaa
  • Частый гость
  • 60 сообщений

public static bool IsPower2(uint num)
{
   return (num & -num) == num;
}

Fail : IsPower2(0)
  • 0

#60
Visual1

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

Fail : IsPower2(0)

Ну да, ну да. Забыл, что 0 тоже целое неотрицательное число, и надо добавить проверку на 0:

public static bool IsPowerOf2(uint num)
{
   return (num !=0) && ((num & -num) == num);
}

  • 0


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

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

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

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