powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как написать функцию красивее
25 сообщений из 39, страница 1 из 2
Как написать функцию красивее
    #32837480
Фотография Andrei Fomichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--------------
private String encode_move(int x , int y) {
int i,j; String s;

i = (int)((x-startx)/cell_w) + 1;
byte cc[] = {(byte)('A'+i)};

j = (int)((y-starty)/cell_h) + 1;
if (direction==0) {
byte dd[]= {(byte)('1'+i)};
s = new String(cc) + new String(dd);
} else {
byte ee[] = {(byte)('9'-i)};
s = new String(cc) + new String(ee);
}
return (s);
}
------------
понимаю, что это через одно место, но изящнее выразить свои мысли не могу. Функция переводит координаты нажатия мышки в осмысленные ходы фигур Например e2, e4 и т.д. ( шахматы)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838288
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrei Fomichev
private String encode_move(int x , int y) {
int i,j; String s;

i = (int)((x-startx)/cell_w) + 1;
byte cc[] = {(byte)('A'+i)};

j = (int)((y-starty)/cell_h) + 1;
if (direction==0) {
byte dd[]= {(byte)('1'+i)};
s = new String(cc) + new String(dd);
} else {
byte ee[] = {(byte)('9'-i)};
s = new String(cc) + new String(ee);
}
return (s);
}

Хотя бы так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
     private  String encode_move( int  x,  int  y) {
         int  i = ( int ) ((x - startx) / cell_w) +  1 ;
         int  j = ( int ) ((y - starty) / cell_h) +  1 ;
        String result;
         if  (direction ==  0 ) {
            result = ( char ) ('A' + i) + ( char ) ('1' + i);
        }  else  {
            result = ( char ) ('A' + i) + ( char ) ('9' - i);
        }
         return  result;
    }
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838320
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
     private  String encode_move( int  x,  int  y) {
         int  i = ( int ) ((x - startx) / cell_w) +  1 ;
         int  j = ( int ) ((y - starty) / cell_h) +  1 ;
         if  (direction ==  0 ) {
             return  ( char ) ('A' + i) + ( char ) ('1' + i);
        }  else  {
             return  ( char ) ('A' + i) + ( char ) ('9' - i);
        }
    }
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838337
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™:)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
     private  String encode_move( int  x,  int  y) {
         int  i = ( int ) ((x - startx) / cell_w) +  1 ;
         int  j = ( int ) ((y - starty) / cell_h) +  1 ;
         if  (direction ==  0 ) {
             return  ( char ) ('A' + i) + ( char ) ('1' + i);
        }  else  {
             return  ( char ) ('A' + i) + ( char ) ('9' - i);
        }
    }


Самое главное и там и там пофиксить тип ^_^
Код: plaintext
1.
"" + ( char ) ('A' + i) + ( char ) ('9' - i)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838384
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs А.Грасоff™:)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
     private  String encode_move( int  x,  int  y) {
         int  i = ( int ) ((x - startx) / cell_w) +  1 ;
         int  j = ( int ) ((y - starty) / cell_h) +  1 ;
         if  (direction ==  0 ) {
             return  ( char ) ('A' + i) + ( char ) ('1' + i);
        }  else  {
             return  ( char ) ('A' + i) + ( char ) ('9' - i);
        }
    }


Самое главное и там и там пофиксить тип ^_^
Код: plaintext
1.
"" + ( char ) ('A' + i) + ( char ) ('9' - i)

точно :)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838410
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
private static String encode_move(int x, int y) {
        int i = (int) ((x - startx) / cell_w) +  1 ;
        int j = (int) ((y - starty) / cell_h) +  1 ;
	return (direction== 0 )?""+(char) ('A' + i) + (char) ('1' + i):""+(char) ('A' + i) + (char) ('9' - i);
}
:)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838430
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: plaintext
1.
2.
3.
4.
5.
private static String encode_move(int x, int y) {
        int i = (int) ((x - startx) / cell_w) +  1 ;
        int j = (int) ((y - starty) / cell_h) +  1 ;
	return (direction== 0 )?""+(char) ('A' + i) + (char) ('1' + i):""+(char) ('A' + i) + (char) ('9' - i);
}
:)
при таком раскладе переменную j вообще можно убрать
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838594
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton:)
По сравнению с первым, этот труднее править :)
Код: plaintext
1.
2.
3.
4.
5.
 private   static  String encode_move( int  x,  int  y) {
         int  i = ( int ) ((x - startx) / cell_w) +  1 ;
         int  j = ( int ) ((y - starty) / cell_h) +  1 ;
         return  ""+ ( char ) ('A' + i) + ( char )(direction== 0  ? '1' + j : '9' - j);
}
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32838719
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, автор '+1' зря поставил.
Даёшь С-style!
Код: plaintext
1.
2.
3.
 private   static  String encode_move( int  x,  int  y) {
         return  ""+ ( char ) ('A' + ( int ) ((x - startx) / cell_w)) + ( char )(direction== 0  & ((y=( int ) ((y - starty) / cell_h)) == y)? '1' + y : '9' - y);
}
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839058
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
     private   static  String encode_move( int  x,  int  y) {
         return  ""+( char )('A'+(x-startx)/cell_w)+( char )('1'+(direction== 0 &((y=(y-starty)/cell_h)==y)?y: 8 -y));
    }
Что бы быть до конца последовательным :)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839070
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
^^^ до чего же настроение не рабочее :)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839074
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs
Код: plaintext
1.
2.
3.
     private   static  String encode_move( int  x,  int  y) {
         return  ""+( char )('A'+(x-startx)/cell_w)+( char )('1'+(direction== 0 &((y=(y-starty)/cell_h)==y)?y: 8 -y));
    }
Что бы быть до конца последовательным :)ты еще ошибку убери из кода :)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839081
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какую? :)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839100
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я думаю starty и cell_h всё-таки int'ы :)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839112
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsкакую? :)
я всегда (99%) перед тем как дать здесь код, проверяю его,
либо беру заведомо рабочий :)

вместо & поставить - ? (опечатка )
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839116
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ NotGonnaGetUsкакую? :)
я всегда (99%) перед тем как дать здесь код, проверяю его,
либо беру заведомо рабочий :)

вместо & поставить - ? (опечатка )ой. тормоз сегодня во второй раз :)
извини
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839270
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All
Вы, господа занимаетесь вылизыванием внешнего облика функции. Это хорошо. Может имеет смысл попробовать ее на JavaHaskell или JavaEiffel переписать. ИМХО Андрей Фомичев будет в экстазе когда увидет функцию из набора функциональных правил. Хе-хе...
Хотя из лаконичности кода не вытекает производительность. Чего стоят 4 стринговые конкатенации в операторе "?" Любители разгона могут поэкпериментировать с массивом char[]..
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839328
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton2 All
Вы, господа занимаетесь вылизыванием внешнего облика функции. Это хорошо. Может имеет смысл попробовать ее на JavaHaskell или JavaEiffel переписать. ИМХО Андрей Фомичев будет в экстазе когда увидет функцию из набора функциональных правил. Хе-хе...
Хотя из лаконичности кода не вытекает производительность. Чего стоят 4 стринговые конкатенации в операторе "?" Любители разгона могут поэкпериментировать с массивом char[]..

После первого двух ответов идёт флуд, поэтому мы ничего не вылизываем. Где в операторе "?" конкатенации - не понял :)

Последний пример - это иллюстрация того, как любят писать С-шники в своих программах, после чего утверждают, что на java дольше разрабатывать код, поскольку нужно написать его больше :)

Думаешь так лучше? :)
Код: plaintext
1.
2.
3.
 private   static  String encode_move( int  x,  int  y) {
      return  String.valueOf( new   char []{( char )('A'+(x-startx)/cell_w), ( char )('1'+(direction== 0 &((y=(y-starty)/cell_h)==y)?y: 8 -y))});
}
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839376
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs
После первого двух ответов идёт флуд, поэтому мы ничего не вылизываем. Где в операторе "?" конкатенации - не понял

Смотри внимательнее

NotGonnaGetUs
.. любят писать С-шники в своих программах..

За С-шника - спасибо. Да. Я бывший сишник. Чем горжусь.

NotGonnaGetUs
Думаешь так лучше? :)

Думаю - да.

Ну ... от типа String в качестве результата я бы отказался.. но в общем я так-же рассуждаю. Хотя это ... придирки любителя оптимизации.

Дальнейшие наши дебаты будет флеймом пока в студии не появится тест производительности данной функции в двух вариантах.

Твое молчание в форуме буду считать согласием.

Успехов!
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839458
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу ... от типа String в качестве результата я бы отказался.. но в общем я так-же рассуждаю

String - это не тип
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839482
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне внимательно смотреть на свои "?" или на твои? :)

Продолжаем флейм :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
        for  ( int  count =  0 ; count <  5 ; count++) {
             long  time = System.currentTimeMillis();
             for  ( int  i =  0 ; i <  5 ; i++) {
                 for  ( int  k =  0 ; k <  500000 ; k++) {
                    String o = "" + ( char ) ('A' + i) + ( char ) ('1' + i);
                }
            }
            System.out.println("time(1): " + (System.currentTimeMillis()-time));
        }


         for  ( int  count =  0 ; count <  5 ; count++) {
             long  time = System.currentTimeMillis();
             for  ( int  i =  0 ; i <  5 ; i++) {
                 for  ( int  k =  0 ; k <  500000 ; k++) {
                    String o = String.valueOf( new   char []{( char ) ('A' + i), ( char ) ('1' + i)});
                }
            }
            System.out.println("time(2): " + (System.currentTimeMillis()-time));
        }

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
time( 1 ):  1092 
time( 1 ):  981 
time( 1 ):  1002 
time( 1 ):  1021 
time( 1 ):  1072 
time( 2 ):  531 
time( 2 ):  491 
time( 2 ):  500 
time( 2 ):  501 
time( 2 ):  501 

char[] win :)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839495
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 NotGonnaGetUs
маладес, падписался
зы
фак по жабе так и не создан :(, а мы голосовали :(
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839499
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalexaka2 NotGonnaGetUs
маладес, падписался
зы
фак по жабе так и не создан :(, а мы голосовали :(
голосовали. только жужыль забил на это.
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839520
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое вкусное забыл:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        for  ( int  count =  0 ; count <  5 ; count++) {
             long  time = System.currentTimeMillis();
             for  ( int  i =  0 ; i <  5 ; i++) {
                 for  ( int  k =  0 ; k <  500000 ; k++) {
                     char [] o =  new   char []{( char ) ('A' + i), ( char ) ('1' + i)};
                }
            }
            System.out.println("time(3): " + (System.currentTimeMillis()-time));
        }

Код: plaintext
1.
2.
3.
4.
5.
time( 3 ):  90 
time( 3 ):  80 
time( 3 ):  111 
time( 3 ):  90 
time( 3 ):  90 

:)
...
Рейтинг: 0 / 0
Как написать функцию красивее
    #32839667
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs
Самое вкусное забыл:


(ЦИК в составе меня публикует первые результаты)

Итак, господа мы имеем предварительные результаты первого тура тестирования самой быстрой в мире (:) ) функции преобразования координат в шахматную нотацию в трех вариантах, предложенную NotGonnaGetUs

1) Конкатенация строк - 5168 ms или 63 % общего времени работы

2) Конструирование вектора символов с преобразованием в строку - 2254 мс или 31% общего времени работы

3) Конструирование вектора символов без преобразования в строку - 461 мс или 6 % общего времени работы.

ЦИК обьявляет благодарность NotGonnaGetUs за содействие компании.
Благодарность Грасоff за активниейшее участие.

Всем спасибо!

P.S. NotGonnaGetUs! Извини за наезд по поводу операции "?"
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Как написать функцию красивее
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]