- 1
- 2
- 3
- 4
- 5
- 6
- 7
func Map[F, T any](s []F, f func(F) T) []T {
r := make([]T, len(s))
for i, v := range s {
r[i] = f(v)
}
return r
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
func Map[F, T any](s []F, f func(F) T) []T {
r := make([]T, len(s))
for i, v := range s {
r[i] = f(v)
}
return r
}
Го сдался.
+1
<?php
error_reporting(0);
ini_set('display_errors', '0');
mb_internal_encoding('UTF-8');
header('Access-Control-Allow-Origin: *');
header('Content-Type: text/html; charset=utf-8');
$string=mb_strtolower(trim($_REQUEST['q']));
$string=str_replace('#', 'sharp', $string);
$string=str_replace('++', 'plusplus', $string);
preg_match_all('/(\w+)/u', str_replace('_', '', $string), $matches);
$words=$matches[1];
$bad=array();
$good=array();
foreach($words as $word){
if(mb_strpos($word, 'java')!==false || mb_strpos($word, 'джав')!==false || mb_strpos($word, 'ява')!==false){
if(mb_strpos($word, 'script')===false && mb_strpos($word, 'скрипт')===false){
$bad[]='Java';
}
}
if(mb_strpos($word, 'python')!==false || mb_strpos($word, 'питон')!==false || mb_strpos($word, 'пайтон')!==false){
$bad[]='Python';
}
if(mb_strpos($word, 'perl')!==false || mb_strpos($word, 'перл')!==false || mb_strpos($word, 'пёрл')!==false){
$bad[]='Perl';
}
if(mb_strpos($word, 'cplusplus')!==false || mb_strpos($word, 'сplusplus')!==false || mb_strpos($word, 'cpp')!==false){
$bad[]='C++';
}
if(mb_strpos($word, 'csharp')!==false || mb_strpos($word, 'сsharp')!==false || mb_strpos($word, 'сишарп')!==false || mb_strpos($word, 'сшарп')!==false){
$bad[]='C#';
}
if($word=='c' || $word=='си' || $word=='сях'){
$bad[]='C';
}
if(mb_strpos($word, 'haskel')!==false || mb_strpos($word, 'хаскел')!==false){
$bad[]='Haskell';
}
if(mb_strpos($word, 'pascal')!==false || mb_strpos($word, 'паскал')!==false){
$bad[]='Pascal';
}
if(mb_strpos($word, 'delphi')!==false || mb_strpos($word, 'delfi')!==false || mb_strpos($word, 'делф')!==false || mb_strpos($word, 'дельф')!==false){
$bad[]='Delphi';
}
if(mb_strpos($word, 'assembler')!==false || mb_strpos($word, 'asm')!==false || mb_strpos($word, 'ассемблер')!==false || mb_strpos($word, 'асм')!==false){
$bad[]='Assembler';
}
if(mb_strpos($word, 'ruby')!==false || $word=='руби' || mb_strpos($word, 'рубист')!==false || mb_strpos($word, 'рубях')!==false){
$bad[]='Ruby';
}
if(mb_strpos($word, '1c')!==false || mb_strpos($word, '1с')!==false || mb_strpos($word, '1ц')!==false){
$bad[]='1C';
}
if(mb_strpos($word, 'dart')!==false || mb_strpos($word, 'дарт')!==false){
$bad[]='Dart';
}
if(mb_strpos($word, 'linux')!==false || mb_strpos($word, 'линукс')!==false || mb_strpos($word, 'линух')!==false || mb_strpos($word, 'ubunt')!==false || mb_strpos($word, 'убунт')!==false || mb_strpos($word, 'debian')!==false || mb_strpos($word, 'дебиан')!==false || mb_strpos($word, 'freebsd')!==false || mb_strpos($word, 'фрибсд')!==false){
$bad[]='Linux';
}
if(mb_strpos($word, 'unix')!==false || mb_strpos($word, 'nix')!==false || mb_strpos($word, 'юникс')!==false || mb_strpos($word, 'юних')!==false){
$bad[]='Unix';
}
if(mb_strpos($word, 'jvm')!==false || mb_strpos($word, 'жвм')!==false){
$bad[]='JVM';
}
if(mb_strpos($word, 'jsharp')!==false){
$bad[]='J#';
}
if(mb_strpos($word, 'jplusplus')!==false){
$bad[]='J++';
}
if(mb_strpos($word, 'git')!==false || mb_strpos($word, 'гит')!==false){
if(mb_strpos($word, 'hub')===false && mb_strpos($word, 'хаб')===false && mb_strpos($word, 'lab')===false && mb_strpos($word, 'лаб')===false){
$bad[]='Git';
}
}
if(mb_strpos($word, 'svn')!==false || mb_strpos($word, 'свн')!==false){
$bad[]='SVN';
}
if(mb_strpos($word, 'postgres')!==false || mb_strpos($word, 'постгр')!==false || mb_strpos($word, 'pg_')!==false){
$bad[]='PostgreSQL';
}
if(mb_strpos($word, 'composer')!==false || mb_strpos($word, 'композер')!==false){
$bad[]='Composer';
}
if(mb_strpos($word, 'bower')!==false || mb_strpos($word, 'бовер')!==false || mb_strpos($word, 'бауэр')!==false || mb_strpos($word, 'боуэр')!==false){
$bad[]='Bower';
}
if(mb_strpos($word, 'node')!==false || mb_strpos($word, 'ноде')!==false || mb_strpos($word, 'нода')!==false){
$bad[]='NodeJS';
}
if(mb_strpos($word, 'php')!==false || mb_strpos($word, 'пхп')!==false || mb_strpos($word, 'пых')!==false || mb_strpos($word, 'пэхапэ')!==false || mb_strpos($word, 'похапэ')!==false || mb_strpos($word, 'пехапе')!==false || mb_strpos($word, 'похапе')!==false || mb_strpos($word, 'эйч')!==false || mb_strpos($word, 'пшп')!==false){
$good[]='PHP';
}
if(mb_strpos($word, 'mysql')!==false || mb_strpos($word, 'мускул')!==false || mb_strpos($word, 'майскул')!==false){
$good[]='MySQL';
}
if(mb_strpos($word, 'windows')!==false || mb_strpos($word, 'виндовс')!==false || mb_strpos($word, 'шинд')!==false || mb_strpos($word, 'винд')!==false){
$good[]='Windows';
}
}
0
Во сколько вы оцените время на разработку минимального сонсольного текстового редактора типа "vim" (назовем его "huim")
со следующим функционалом:
- 2 режима с переходами по "i" и "esc". Один режим редактирования текста, другой - режим команд.
- только 2 команды - ":q!" и ":wq"
- в текстовом режиме нихуя нет, кроме печатания символов, "Delete", "Backspace" и переходов по стрелкам.
Задача со звёздочкой:
Что дополнительно надо, чтобы это работало во всех сонсолях: "Linux", "MacOS", "Windows", "ReactOS", "ColibriOS", " CentOS", "FreeBSD", "KDE", "Kubernetes"?
P.S. Видел сегодня в метро на кольцевой дебила. Konardyan, это не ты был?
0
"""
This module provides a function merge_sort, which is one of the simplest and the
most robust sorting algorithms, being relatively fast, having (n*log(n))
complexity. Also, this module counts the number of inversions in a given array.
Usage: import this module and use the function merge_sort. The first element in
a returned tuple shall be a sorted array, while the second one will be a number
of inversions in the array.
Copyright (C) 2021 Sergay Gayorgyevich.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
import argparse
def merge_sort(array : list) -> (list, int):
"""
MergeSort algorithm with additional inversion counting.
input: array.
output: sorted array and number of inversions in it.
"""
if len(array) <= 1:
return (array, 0)
elif len(array) == 2:
if array[0] > array[1]:
array[0], array[1] = array[1], array[0]
return (array, 1)
return (array, 0)
mid = len(array) // 2
left, left_inversions = merge_sort(array[:mid])
right, right_inversions = merge_sort(array[mid:])
merged, split_inversions = _merge(left, right)
return (merged, right_inversions + left_inversions + split_inversions)
def _merge(left_array : list, right_array : list) -> (list, int):
"""
This function isn't supposed to be called, it's an inner function of the
module, and not a part of its API!
The purpose of this function is to merge two arrays. Due to the nature of
the MergeSort algorithm, it operates two arrays, both of which are sorted.
input: two sotrted arrays.
output: sorted array, consisting of elements of both operated arrays.
"""
resulting_array = list()
inversion_count = 0
c_len = len(left_array) + len(right_array)
for i in range(c_len):
if (len(left_array) != 0) and (len(right_array) != 0):
if left_array[0] > right_array[0]:
inversion_count += len(left_array)
resulting_array.append(right_array.pop(0))
else:
resulting_array.append(left_array.pop(0))
elif len(left_array) == 0:
resulting_array.append(right_array.pop(0))
elif len(right_array) == 0:
resulting_array.append(left_array.pop(0))
return (resulting_array[:], inversion_count)
# For testing purposes only! Do not use in production!
if __name__ == '__main__':
DESC = "Sort an array and print an amount of inversions it has." # Description for argparse.
argparser = argparse.ArgumentParser(description = DESC)
argparser.add_argument("elements", type = int, nargs = '+', help = "A list to be sorted.")
args = argparser.parse_args()
print(merge_sort(args.elements))
Изучаю алгоритм "Сортировка Слиянием".
+139
Есть вопрос который меня давно мучает, он по поводу инкапсуляции, полеморфизма, нацизма и мазохизма.
Почему хохлы так любят Java?
Самый противный ЯП я считаю, синтаксис мерзкий, мерзкие обязательные классы, но кое что в нем радует, кроссплатформенность и неплохая производительность на первый взгляд не очевидная, но запись в миллиардный миссив происходит быстрее в жабе, чем на чистом Си без оптимизаций, но Си с -O2 все равно быстрее.
И все таки почему украинцы так любят жабу, или они ничего другого не знают и как можно привыкнуть к такому противному ЯП?
Что ни урок\лекция\сайт по жабе - то с украинским акцентом или лекция записаная на Украине или домен сайта .ua.
+153
if($vOk)
{
if($vOk)
{
...
}
}
Дополнительная проверка не повредит.
+133
// bormand: Ну что, затестим шейдер в WebGL...
int iter = 0;
while (iter < 1000 && length(z) < 2.0) {
z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
iter++;
}
// compileShader: 'while' : This type of loop is not allowed
// bormand: WTF?! В обычном OpenGL же работало, ну ок...
int iter = 0;
for (; iter < 1000; iter++) {
if (length(z) < 2.0)
break;
z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
}
// compileShader: 'for' : Missing init declaration
// bormand: Да что за херня!?
for (iter = 0; iter < 1000; iter++) {
// compileShader: 'for' : Invalid init declaration
// bormand: Подавись, сука!
int iters = -1;
for (int iter = 0; iter < 1000; iter++) {
if (length(z) < 2.0) {
iters = iter;
break;
}
z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;
}
// compileShader: ok.
bormand vs WebGL
+2
int f6(int* a,int k, double& min, int& n, int& count) {
int i;
min = a[0];//8
n = 0;
count = 0;
for (i = 0; i < k; i++) {
if (a[i] == 0) {
count += 1;
}
if (abs(10-abs(a[i])) < abs(min)) {
min = a[i];
n = i;
}
}
return 0;
}
Помогите!!Пожалуйста!!Надо найти ближайший элемент к 10ти и его номер, почему не работает??
+1
<?php
$cd = dirname($_SERVER['SCRIPT_NAME'])."/resources";
$type=$_GET["type"];
if($type=="emptyhtml")
{
header("Last-Modified: " . gmdate('D, d M Y H:i:s', time()) . 'GMT');
header("Expires: " . gmdate('D, d M Y H:i:s', time() + 2592000) . 'GMT');
header("Content-Type: text/html");
echo("<html><head><title>EMPTY</title></head><body></body></html>");
exit(200);
}
else if($type=="script")
{
header("Content-Type: application/oct-stream"); // -< здесь ишибка
?>
if(!window.CuteWebUI_AjaxUploader_OnPostback)
window.CuteWebUI_AjaxUploader_OnPostback=function()
{
Не существует Content-Type: application/oct-stream
Существует Content-Type: application/octet-stream
Код работал с ошибкой 10 лет, перестал через директиву безопасности современный браузеров x-content-type-options: nosniff
Это разработка Cute Editor for PHP https://cutesoft.net/downloads/17/default.aspx
Гении тоже допускают ошибку...
0
array_filter($input, $callback);
array_map($callback, $input);