Загадки
Запись от Inet_PC размещена 17.03.2014 в 22:22
Обновил(-а) Inet_PC 20.03.2014 в 14:43 (Добавлено еще 3 загадки)
Обновил(-а) Inet_PC 20.03.2014 в 14:43 (Добавлено еще 3 загадки)
Загадка №1:
Есть класс TestBase:
package { public class TestBase { public function TestBase() { super(); } public function foo(a:int, b:int):void { trace("TestBase#foo()"); } } }
Сигнатуру метода менять нельзя!
Загадка №2:
private function foo():void { // какой-то код здесь // использовать ключевое слова var нельзя player = null; } foo();
Загадка №3:
Имеется класс:
package { public class TestClass { public function TestClass() { super(); } public function foo():void { trace("foo"); } public function change(value:Function):void { } } }
foo
--> foo <--
public function Main() { var test:TestClass = new TestClass(); test.foo();//foo test.change(myTrace); test.foo();//--> foo <-- } private function myTrace(...args):void { args.push ("<--"); args.unshift("-->"); trace.apply(null, args); }
- менять код класса Main нельзя;
- использовать var, const, dynamic, prototype нельзя;
- менять метод foo нельзя;
- наследоваться нельзя.
Загадка №4:
Необходимо, не меняя значения переменных, изменить результат их сравнения.
var a:Point = new Point(5); var b:Point = new Point(1); trace(a, "<", b, "=", a < b);//(x=5, y=0) < (x=1, y=0) = false // какой-то код здесь trace(a, "<", b, "=", a < b);//(x=5, y=0) < (x=1, y=0) = true
Необходимо вызвать метод foo, так, чтобы в трейс вывелось: «foo» и «after foo»:
private function foo(...args):void { trace("foo"); throw new Error(); } // здесь нужно как-то вызвать foo trace("after foo");
-должно работать как в debug, так и в release FP;
-изменять метод foo нельзя;
-никаких окон с ошибками не должно быть.
Загадка №6:
Имеется класс Color, с перечислением цветов (фактически Enum):
public class Color { public static const RED:Color = new Color(0xFF0000);//it's OK public static const GREEN:Color = new Color(0x00FF00);//it's OK public static const RANDOM:Color = new Color(Math.random() * 0xFFFFFF);//it's OK // остальные объявления цветов private var _value:uint; public function Color(value:uint) { super(); _value = value; // какой-то код здесь } public function toString():String { return _value.toString(); } }
создать еще один экземпляр класса Color:
trace(Color.RED, Color.GREEN, Color.RANDOM);//0xFF0000 0x00FF00 0xF67D53 trace(new Color(Math.random() * 0xFFFFFF));//здесь должно упасть в run-time
-использовать динамику нельзя.
Некоторые задачи имеют несколько решений. Так же некоторые задачи используют недокументированные
возможности FP. Используйте их (лучше не используйте) на свой страх и риск. Вообщем это все just for fun!
Всего комментариев 80
Комментарии
![]() ![]() |
|
![]() ![]() |
|
СлаваRa, именно)
|
|
Обновил(-а) Inet_PC 20.03.2014 в 09:09
|
![]() ![]() |
|
Читеры
![]() |
![]() ![]() |
|
Класс, спасибо!
|
![]() ![]() |
|
Вторую не понял, куда код пишем?
|
![]() ![]() |
|
![]() ![]() |
|
etc, к сожалению решение неверное, использовать ключевое слово var нельзя!
in4core, именно! |
![]() ![]() |
|
@etc, я упустил момент с const, его использовать тоже нельзя, согласитесь, иначе слишком простое задание получается.
|
![]() ![]() |
|
![]() ![]() |
|
ChuwY, решение засчитывается!
etc, именно, решение засчитано! Но эту задачу можно решить и другим путем, не используя динамические объекты! Возможно Ваш хардкор вариант подойдет? |
![]() ![]() |
|
ChuwY, решение правильное, но оно аналогично решению etc, так как использует динамический объект, попробуйте решить без использования динамических объектов.
|
![]() ![]() |
|
Мой хардкор вариант тоже динамику использует.
Щас подумаем над вариантом без динамики. |
![]() ![]() |
|
![]() ![]() |
|
![]() ![]() |
|
![]() ![]() |
|
@in4core, ты кстати с многоножкой foo вообще вызываешь или нет?
![]() |
![]() ![]() |
|
Ну и задача от меня:
package { /** * @author etc * @version 1.0 * @playerversion Flash 10 * @langversion 3.0 * @date Mar 20, 2014 */ public class SomeClass { //-------------------------------------------------------------------------- // // Class constants // //-------------------------------------------------------------------------- public static const TEST:String = 'test'; //-------------------------------------------------------------------------- // // Class methods // //-------------------------------------------------------------------------- public static function test():void { // Код только здесь trace(x.TEST); // test } //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- public function SomeClass() { super(); } } } |
|
Обновил(-а) etc 20.03.2014 в 16:49
|
![]() ![]() |
|
Цитата:
Задача недостаточно хорошо поставлена, не указана среда выполнения и допускается ли использовать дебажные методы.
|
![]() ![]() |
|
Ну раз разрешены, то можно в Flash IDE запустить в режиме Debug:
(в первом кадре) |
![]() ![]() |
|
in4core, запускается как раз SomeClass.test(); Нельзя внутри test() писать SomeClass в каком-либо виде.
Трейс там должен выводить значение константы TEST. |
![]() ![]() |
|
etc - с моей задачей - да , все ок молодцом. Но с вашей, я опять недопонимаю , если я напишу просто trace(TEST) разве это не будет удовлетворять вашим условиям?
|
![]() ![]() |
|
in4core, поправил чутка. Короче задача сводится к тому чтобы в x получить ссылку на SomeClass
|
![]() ![]() |
|
![]() ![]() |
|
Конечно не пойдёт, SomeClass явно в коде указан.
|
![]() ![]() |
|
![]() ![]() |
|
Можно и так, но есть вариант без этого. Но таки да, меджик.
in4core, посмотрю попозже. |
![]() ![]() |
|
Обновил(-а) rumc 20.03.2014 в 21:32
|
![]() ![]() |
|
Цитата:
in4core, посмотрю попозже.
|
![]() ![]() |
|
Inet_PC, а откуда в статичном методе доступ к prototype?
|
![]() ![]() |
|
Да кстати это феил. как то неусмотрели. arguments.callee.prototype.constructor тоже не взлетит.
|
![]() ![]() |
|
Ага, не работает prototype. Ещё варианты?
|
![]() ![]() |
|
etc а вроде уже ответили. с дескрайбТайп
|
![]() ![]() |
|
Да я видел, принимается. Есть ещё вариант, похожий, но без функции.
|
![]() ![]() |
|
Цитата:
Inet_PC, а откуда в статичном методе доступ к prototype?
Цитата:
A reference to the prototype object of a class or function object. The prototype property is automatically created and attached to any class or function object that you create. This property is static in that it is specific to the class or function that you create. For example, if you create a class, the value of the prototype property is shared by all instances of the class and is accessible only as a class property. Instances of your class cannot directly access the prototype property.
Цитата:
Ага, не работает prototype. Ещё варианты?
|
|
Обновил(-а) Inet_PC 21.03.2014 в 22:50
|
![]() ![]() |
|
etc - ну так что, сдаешься по моей задаче? 1:1 или поборешься?
![]() |
![]() ![]() |
|
Нет времени сейчас, потом.
|
Последние записи от Inet_PC
- Загадки (17.03.2014)