Страницы

Поиск по вопросам

понедельник, 1 октября 2018 г.

Поменять две переменные местами, не используя третью

Задача об обмене двух целочисленных переменных значениями (без использования третьей) является одним из классических программистских ребусов.
Как сделать это в PHP, используя минимальное количество символов?
Критерий победы — минимальное количество символов. При прочих равных условиях ответ, опубликованный раньше, побеждает. Подведение итогов через 24 часа.

Пожалуйста, указывайте в ответе количество символов, чтобы проще было выявить победителя.
function getAnswers(questionId, answer_filter, page) { return jQuery.ajax({ url: '//api.stackexchange.com/2.2/questions/' + questionId + '/answers?page=' + page + '&pagesize=100&order=desc&sort=activity&site=ru.stackoverflow&filter=' + answer_filter, method: "get", dataType: "jsonp", crossDomain: true }).then(function(data) { if (data.has_more) { return getAnswers(questionId, answer_filter, page + 1).then(function(d) { return data.items.concat(d.items); }) } return data.items; }); } function getAuthorName(e) { return e.owner.display_name } function process(items) { return items.map(function(item) { var matched = item.body.match(/(\d+)[^\d]*?<\/h/); if (matched) { return { count: +matched[1], link: item.share_link, author: getAuthorName(item) }; } else { return { count: 'N/A', link: item.share_link, author: getAuthorName(item) } } }); } function sort(items) { return items.sort(function(a, b) { if (a.count == 'N/A') return 1; if (b.count == 'N/A') return -1; return a.count - b.count; }) } function fillTemplate(sortedItems) { $('#leadership').append(sortedItems.map(function(item, index) { return $('').append($('').html(index + 1)) .append($('').html(item.author)) .append($('').html(item.count)) .append($('').append($('').attr('href', item.link).text('Link'))); })); return sortedItems; } var QUESTION_ID = 540286, ANSWER_FILTER = "!4*SyY(4Kifo3Mz*lT", startPage = 1; getAnswers(QUESTION_ID, ANSWER_FILTER, startPage) .then(process) .then(sort) .then(fillTemplate); #leadership { border-collapse: collapse; } #leadership td, #leadership th { padding: 5px; } #leadership th, td:nth-child(3) { text-align: center; }

Таблица лидеров

Автор Количество символов


Комментарий, о причине выбора победителя:
Лидирующий ответ @PashaPash (0 символов) фактически не меняет переменных, поэтому не участвует в конкурсе.
Ответ от @Naumov (10 символов), вместо обмена переменных просто присваивает им новые значения. Ну и его длина не является постоянной, а зависит от значений переменных. Рассматривать этот ответ в рамках конкурсной программы я не буду.


Ответ

PHP, 14 Символов
$a+=+$b-$b=$a;
Рабочий пример на IDEOne.

Пока я не вполне понимаю почему это работает. Поэтому оформил отдельным ответом, чтобы была возможность безболезненно удалить.

Комментариев нет:

Отправить комментарий