- 1
про свинг
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
про свинг
песня про это дело
+1
template<typename CharType>
class Formatter
{
private:
static int _ToString(Int32 Value){
return CString<CharType>::Snprintf(
(CharType*)GSupportToStringBuffer,
TO_STRING_BUFFER_SIZE,
"%" PRId32,
Value);
}
static int _ToString(float Value){
return CString<CharType>::Snprintf(
(CharType*)GSupportToStringBuffer,
TO_STRING_BUFFER_SIZE,
"%f",
Value);
}
template<typename First, typename ... Args>
static void _ConvertArgs(Array<GenericString<CharType>>& _ArgBuffer, const First& _First, const Args& ... _Args) {
_ArgBuffer.Add(ToString(_First));
_ConvertArgs(_ArgBuffer, _Args ...);
}
template<typename First>
static void _ConvertArgs(Array<GenericString<CharType>>& _ArgBuffer, const First& _First) {
_ArgBuffer.Add(ToString(_First));
}
static bool _ScanPlaceholder(const CharType* Format, size_t Index, size_t Length, size_t& Placeholder, size_t& LastIndex) {
size_t i = Index;
size_t j = 0;
while (i < Length && Format[i] != FormatterPlaceholder<CharType>::End)
{
if (!Char<CharType>::IsDigit(Format[i]))
{
return false;
}
else
{
GSupportToStringBuffer[j] = Format[i];
j++;
}
i++;
}
if (i == Length)
return false;
GSupportToStringBuffer[j] = 0;
#if defined(64BIT)
Placeholder = CString<CharType>::Atoi64((const CharType*)GSupportToStringBuffer);
#else
Placeholder = CString<CharType>::Atoi((const CharType*)GSupportToStringBuffer);
#endif
LastIndex = i;
return true;
}
public:
template<typename T>
static GenericString<CharType> ToString(const T& Value) {
int Length = Formatter<CharType>::_ToString(Value);
return GenericString<CharType>((char*)GSupportToStringBuffer, Length);
}
template<typename ... Args>
static GenericString<CharType> Format(const CharType* Format, const Args& ... _Args) {
Array<GenericString<CharType>> _FormatedArgs;
_FormatedArgs.Reserve(sizeof...(Args));
Formatter<CharType>::_ConvertArgs(_FormatedArgs, _Args ...);
const size_t _Length = CString<CharType>::Strlen(Format);
size_t Index = 0;
for (size_t i = 0; i < _Length; i++)
{
if (Format[i] == FormatterPlaceholder<CharType>::Begin)
{
size_t Placeholder = 0;
size_t LastIndex = 0;
if (_ScanPlaceholder(Format, i + 1, _Length, Placeholder, LastIndex) && Placeholder < sizeof...(Args))
{
Memory::Copy(GSupportFormatBuffer + Index, _FormatedArgs[Placeholder].Data(), _FormatedArgs[Placeholder].Length() * sizeof(CharType));
Index += _FormatedArgs[Placeholder].Length();
i = LastIndex;
}
}
else
{
GSupportFormatBuffer[Index] = Format[i];
Index++;
}
}
GSupportFormatBuffer[Index] = 0;
return GenericString<CharType>((const CharType*)GSupportFormatBuffer);
}
};
template<typename T>
forceinline String ToString(const T& Value){
return Formatter<char>::ToString<T>(Value);
}
template<typename ... Args>
forceinline String Format(const char* Format, const Args& ... _Args){
return Formatter<char>::Format(Format, _Args ...);
}
Три года назад писал printf аля Console.WriteLine в C#. Тут порезал до ста строк. https://pastebin.com/8BCLuBEm
+1
https://www.linux.org.ru/forum/development/15475716?cid=15478711
> Система типов в С++ куда мощнее любой скриптухи, особенно хаскеля. Там уже есть завтипы. А значит какая угодно суперкомпиляция. Да и сам С++ состоит из суперкомпиляции на 99%.
Царь
−3
export namespace Ext {
export function isEmpty(obj: any): boolean {
return (typeof obj === "undefined" || obj === null || obj === "");
}
export function setReadonly(flag: boolean, ...args: any[]): void {
args.length > 0 ? (flag ? args.forEach(arg => !isEmpty(arg) ? arg.setDisabled(false) : null) :
args.forEach(arg => !isEmpty(arg) ? arg.setDisabled(true) : null)) : null;
}
export function filterInt(value) {
if (isStrToInt(value))
return Number(value);
return NaN;
}
export function isStrToInt(value: string): boolean {
return /^(-|\+)?(\d+|Infinity)$/.test(value) ? true : false;
}
}
Типичный хелпер на ts проекте
+2
>>> from heapq import heappush, heappop
>>> heap = []
>>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
>>> for item in data:
... heappush(heap, item)
...
>>> ordered = []
>>> while heap:
... ordered.append(heappop(heap))
...
>>> ordered
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> data.sort()
>>> data == ordered
True
В «Python» есть стандартный модуль «heapq» с процедурками, которые делают из обычного листа очередь с приоритетом: https://docs.python.org/3.8/library/heapq.html. Всё просто, понятно, удобно и без этих ваших «классов» с «наследованиями». Именно поэтому я за «Python».
−1
Оцени свою неприязнь к коллеге по шкале от нуля до
«отсматриваю в Аутлуке каждое его совещание и за две минуты до начала неистово пропёрдываю соответствующую переговорку».
https://twitter.com/feels_like_1984/status/1132221565821759488
Друзья, довайте обсудим кто какие групваре использует
Exchange? Сервисы Google? Что-то еще?
0
Течка по "Node JS" завершена?
+3
class JSObject(object):
def __init__(self, d):
self.__dict__.update(d)
def __getitem__(self, item):
return self.__getattribute__(item)
def __setitem__(self, item, value):
return self.__setattr__(item, value)
def __delitem__(self, item):
return self.__delattr__(item)
def __getattribute__(self, name):
try:
val = object.__getattribute__(self, name)
except AttributeError:
return undefined
else:
return val
def __delattr__(self, name):
try:
object.__delattr__(self, name)
except AttributeError:
pass
return None
def __str__(self):
return '[object Object]'
def __repr__(self):
return self.__dict__.__str__()
class JSUndefined:
__getitem__ = lambda a, b: undefined
__setitem__ = lambda a, b, c: undefined
__delitem__ = lambda a, b, c: undefined
__getattribute__ = lambda a, b: undefined
__setattr__ = lambda a, b, c: undefined
__delattr__ = lambda a, b: undefined
__str__ = lambda self: 'undefined'
__repr__ = lambda self: 'undefined'
undefined = JSUndefined()
Перевёл «JavaScript» на «Python».
0
// https://github.com/QWalk/mainline/blob/b12ea3652226caef23c2f5fc7b168746c89096f2/src/system/Pseudopotential_so.cpp#L36
doublevar legendre_so(doublevar x, int n)
{
switch(n)
{
case 0:
return 1;
case 1:
return x;
case 2:
return .5*(3*x*x-1);
case 3:
return .5*(5*x*x*x - 3*x);
case 4:
return 0.125*(35*x*x*x*x -30*x*x +3);
case 5:
return 0.125*(63*x*x*x*x*x - 70*x*x*x + 15*x);
default:
error("Do not have legendre polynomial of order ", n);
return 0; //shouldn't get here, but gets rid of a compiler message
}
}
Вот нет чтоб через шаблоноговно нагенерировать эти свои многочлены Лагранжа.
https://en.wikipedia.org/wiki/Legendre_polynomials#Rodrigues'_formula_and_other_explicit_formulas
Интересно, сколько строк шаблоноговна на это придется потратить?
И вообще, надо чтоб гомоиконность!
+2
Функция ПолучитьСтавкуНДС(СуммаСНДС, НДС)
Если НДС = 0 Тогда
Возврат Перечисления.СтавкиНДС.БезНДС;
ИначеЕсли СуммаСНДС = 0 Тогда //некорректные данные
Возврат Перечисления.СтавкиНДС.БезНДС;
ИначеЕсли НДС / СуммаСНДС <= 0.152+0.0152 и НДС / СуммаСНДС >= 0.152-0.0152 Тогда
Возврат Перечисления.СтавкиНДС.НДС18;
ИначеЕсли НДС / СуммаСНДС <= 0.091+0.0091 и НДС / СуммаСНДС >= 0.091-0.0091 Тогда
Возврат Перечисления.СтавкиНДС.НДС10;
КонецЕсли;
КонецФункции
Костыль костыльный