Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Rooster

Программирование, т. 7

  

536 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

(изменено)

getProperEnding(word, count)

а если серьёзно, nounPluralEnding/pluralEnding чето такое

задетекчен по отсутствию действия(глагола) в имени функции

 

стараюсь избегать спама Гет-ов в статик функциях, т.к. обычно эти функции чистые и ничего не "достают" ниоткуда, а генерируют

 

по мне на уровне ненужных "Do" в названиях а ля DoAction() в воид функциях


Изменено пользователем TheDeadSkin

Поделиться сообщением


Ссылка на сообщение

Расширил бы класс String методом pluralify(int)  :pisubudew:


Но тело метода было бы пиздец ебанутым конечно, ведь нужно учитывать пол, склонение, и ещё кучу говна, склоняется ли слово вообще.  :blnate:

 

На практике я делал только юникс тайм to день/дня/дней  час/часов ..

Поделиться сообщением


Ссылка на сообщение

string format = new DateTime(1970, 1, 1).AddSeconds(unixTime).ToString()

 

:nate:

Поделиться сообщением


Ссылка на сообщение

 

 

new DateTime(1970, 1, 1).AddSeconds(unixTime)

Ну и костыли, что за язык?  :palevo:  


И да, ты меня не понял дурачок, мне нужна была строка.

5 дней 10 часов 5 секунд.

 

Офк задача была склонять это всё.  :lolpray:

Для dd/MM/YYYY есть форматтеры в жабе.


Ну и в юникстайм был таймдифф между текущим временем офк и датой когда бан спадает. А игроку должно было писать, мол ты хуесос забанен, бан воз экспиред через

4 дня 45 минут 2 минуты 1 секунду

Поделиться сообщением


Ссылка на сообщение

 

new DateTime(1970, 1, 1).AddSeconds(unixTime)

Ну и костыли, что за язык?  :palevo:  

И да, ты меня не понял дурачок, мне нужна была строка.

5 дней 10 часов 5 секунд.

 

Офк задача была склонять это всё.  :lolpray:

Для dd/MM/YYYY есть форматтеры в жабе.

Ну и в юникстайм был таймдифф между текущим временем офк и датой когда бан спадает. А игроку должно было писать, мол ты хуесос забанен, бан воз экспиред через

4 дня 45 минут 2 минуты 1 секунду

 

так разве готовых либ нет на это для любого ЯП?


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение
(изменено)

Ну я тоже думал нпм пакет создать, уже выкладывал, но тут то что нужно подсказали

а ты оптимист, ты род существительного к числительному явно еще не учитывал :buba:

 

бля, опоздал :fffuuu:


Изменено пользователем Kant

Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

 

new DateTime(1970, 1, 1).AddSeconds(unixTime)

Ну и костыли, что за язык?  :palevo:  

 

https://msdn.microsoft.com/ru-ru/library/system.datetimeoffset.fromunixtimeseconds(v=vs.110).aspx

вот такое есть на 4.6 и выше


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

так разве готовых либ нет на это для любого ЯП?

 

Мб и есть, но нахуя тянуть либу на то, что делается свитчами и условиями в 100 строк? (если совсем копипаст на копипасте, так ещё меньше)

 

Там склонений же не так дохуя (по 3 на слово) "день дня дней минут минута минуты час часов часа минута минут минуты секунда секунд секунды" причем подчиняются простому закону, если резульат от %10  1 то инфинитив, если 2-4 то другое склонение, если 5+ то третье (исключение 11-19)


Изменено пользователем Index

Поделиться сообщением


Ссылка на сообщение

а ты закодь свой алгоритм, а я потом засуну туда число 11

 

вот поворот будет

 

 

плюс помножь это на 7 падежей и 3 рода  :pisubudew:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Собственно я даже код нашел.


                    if (val % 10 == 1) {
                        unit = "день";
                        return val + " " + unit;
                    } else {
                        if (val % 10 <= 1 || val % 10 >= 5 || val >= 10 && val <= 20) {
                            unit = "дней";
                        } else {
                            unit = "дня";
                        }
                        return val + " " + unit;
                    }

Собственно такие же блоки для остальных величин, нарушая принципы DRY, нет смысла все копировать  :lolpalm:

Поделиться сообщением


Ссылка на сообщение

твой код как минимум не работает для любого числа оканчивающегося на 11, и любого трехзначного и выше со вторым разрядом 1


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

CASE OF
1 : 'День'
2 : 'Дня'
...

99999999999999999999999 : 'Дней'

Бляяя, вспомнил хуйню типа этой

задачку на каком-то ресурсе решал

 

шок

n = int(input())
if n % 10 == 1 and n % 100 != 11:
     end = ''
elif (n % 100 != 12 and n % 100 != 13 and n % 100 != 14) and (n % 10 == 2 or n % 10 == 3 or n % 10 == 4):
     end = 'а'
else:
     end = 'ов'
print('%s программист%s' % (n, end))

Поделиться сообщением


Ссылка на сообщение
(изменено)

del


Изменено пользователем Rooster

Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

 

 

вой код как минимум не работает для любого числа оканчивающегося на 11, и любого трехзначного и выше со вторым разрядом 1
 

Да он говно на самом деле древнее. Бтв трёхзначных чисел можно избежать. Ибо 60+ секунд это минута, минуты в часы, часы в дни, дни в месяцы, месяцы в года и тд. 


function(length) {
  const lengthStr = String(length);
  const lastDigit = Number(lengthStr[lengthStr.length - 1]);

  switch (true) {
    case lastDigit === 1:
      return 'День';

    case lastDigit > 4 || lastDigit === 0:
      return 'Дней';

    default:
      return 'Дня';
  }
}

Ебать это что?  :palevo:

 

Это в каком языке такое делают? Это легально по гайдлайнам такое в продакшон высирать,где свитч(тру) и в кейсах условия?

Поделиться сообщением


Ссылка на сообщение

Читаемый код


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

if()

else if()

else 

не читаемо?

или

if()

if()

if()

Поделиться сообщением


Ссылка на сообщение

Менее читаемо


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение
function(length) {
  const lengthStr = String(length);
  const lastDigit = Number(lengthStr[lengthStr.length - 1]);

  switch (true) {
    case lastDigit === 1:
      return 'День';

    case lastDigit > 4 || lastDigit === 0:
      return 'Дней';

    default:
      return 'Дня';
  }
}

и че, это выдаст "111 день"?

 

а вообще есть готовое решение

https://gist.github.com/realmyst/1262561

Поделиться сообщением


Ссылка на сообщение

Подводные камни ебаные


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

Ну если ты гарантируешь, что твой компилятор/интерпретатор сохраняет последовательность кейсов, то можешь ебаться как тебе в душе угодно.

 

Потому что во многих языках case'ы строковые конвертятся в хешмап хеш кейса -> блок кода. 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...