- 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
<?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';
}
}
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
не дрожи шалава(С)
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Факт.
Отправлено с помощью "PHP".
Так это же пиздёж, получается. Это сгенерировано оно с помощью "PHP", а вот отправлено - очень даже с помощью "Javascript".
ахахахаххаха
никогда
неужели не понятно?
А это такая операция "push_back"?
Напомни пожалуйста как там поменять индексацию? директивой копелятора?
значит, по умолчанию она там была с единицы
А еще так в VB(S), кажется.
В Lua вообще индексация штука забавная: там таблица может быть и массивом и словарем/мапой/хешем и объктом одновременно
Любой перечислимый тип, "42..100" – тип диапазон, его тоже можно юзать, можно даже [byte] – эквивалентно [0..255], или даже [word] (помню что в TP это не работало, потому что макс рпзмер массива был чуть поменьше размера сегмента). В динамических массивах (array of integer) индексация с 0.
> В Lua
Там же всё таблы? Как реализовано? Всё – хэш-таблицы, независимо от того массив ли это, словарь, объект и пр.?
spam = ['eggs', 'bar']
print (len(spam)) # 2
ренджей (как в руби и перле) как таковых нет
Да скорее мутабельный кортеж
name = ("ivan", "pupkin")[0] #ok
for foo in ("ivan", "pupkin") # не ok
name = ["ivan", "pupkin"][0] #не ok
for user in ["roskomo", "needless"]# ok
но это тонкие материи оче
Ниразу
(сам так же апвотнутый коммент к ответу)
Но большинству программистов на семантику срать, они и слов-то таких не знают. Знают только что они ридонли, а другой нет. И так их и используют. Sad, but true
Вот и я о том же, и они правы. Язык не энфорсит твоих красивых идей, поэтому можно делать что хочется.
В нормальных языках со статической типизацией это энфорсится, и твои рассуждения в них имели бы смысл.
Ничто не мешает тебе обращаться к непубличными символам, например:
Но так делать плохо, правда?
Так же и тут: правила есть, но за ними никто не следит
Не знаю по поводу первой, но уже лет 15 можно. К примеру, статья [1] последний раз обновлялась в 2008 году
pituh = ("kurochka",) везде
Потом я увидел
ptushki = ("kurochka", "tsyplenochek"), и говорю: почему не ["kurochka", "tsyplenochek"] ?
А мне: "ну чтобы не изменить случайно". Тут-то я и понял что немного PHP есть в каждом питоне
> for foo in ("ivan", "pupkin") # не ok
Что "не ok"? Итерироваться по кортежу, потому что элементы могут быть разного типа? Так проверяй тип, если не уверен что этот кортеж гомогенный. Со списком та же хуйня.
> name = ["ivan", "pupkin"][0] #не ok
Тут что "не ok"? И почему можно с кортежом? Ты уверен, что если функция возвращает кортеж, что он ненулевой длины?
я тебе ссылку дал сверху, поди почитай до просветления
И тут еще
[quote]
Though tuples may seem similar to lists, they are often used in different situations and for different purposes. Tuples are immutable, and usually contain a heterogeneous sequence of elements that are accessed via unpacking (see later in this section) or indexing (or even by attribute in the case of namedtuples). Lists are mutable, and their elements are usually homogeneous and are accessed by iterating over the list.
[/quote]
https://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences
Кортеж, как и было сказано выше, это аналог структуры, однако вместо имен полей там положения. Семантика лежащих в нем объектов однозначно определена их положением.
Например следующий кортеж указывает на точку в двумерном пространстве: (22, 34).
Тут 22 это координата по оси X, а 34 по Y. Не смотря на то, что это два числа, у них разный смысл (та сама ситуция, когда тип один, а семантика разная)
Если это понять, то становится так же понятно почему не имеет смысла добавлять что-то в кортеж: он (как структура) имеет изначально известное количество мест, и за каждым закреплен какой-то смысл.
А вот в стек, очередь и вектор добавлять можно.
Разумеется, можно использовать туплу как "рид-онли-лист" пытаясь с ее помощью компенсировать отсутствие его в питоне, но это использование не по назначению (см утюг), да к тому же зачем искуственно тащить в язык "неизменяемый" объект, если его там нет изначально? не лучше тогда сразу взять язык с ридонли листом?
Вот если бы у питона вместо туплы были сразу же структуры (привет, руби) то насколько легче было бы жить
Про остальное то что думаешь?
Мне правда интересно, кто-то кроме меня, Supamee и Izkata читал "datastructures.html", или все правда думают что кортеж это ридонли лист?
Честно говоря, ты люто задрал своей «семантикой». Семантика задаётся либо рефересной имплементацией, либо спекой.
Если в спеке написано "так делать низя" или спеки нет и референсная реализация этого не позволяет, вот это значит, что так делать низя.
Давай откроем референс бидона. Спека нигде никаких семантик не упоминает, кроме иммутабельности никаких отличий от списка не упоминается. Референсная реализация CPython, как ты понимаешь, тоже никаких дополнительных ограничений не налагает.
Более того, есть куча примеров, когда тюплы используются в спеке просто как иммутабельные списки, вот например
__bases__ is a tuple containing the base classes, in the order of their occurrence in the base class list
Полистай на две строчки вверх, или давай я тебе скопирую:
[quote]
Though tuples may seem similar to lists, they are often used in different situations and for different purposes. Tuples are immutable, and usually contain a heterogeneous sequence of elements that are accessed via unpacking (see later in this section) or indexing (or even by attribute in the case of namedtuples). Lists are mutable, and their elements are usually homogeneous and are accessed by iterating over the list.
[/quote]
https://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences
Если в вашем влажном воображении как-то по-другому, это ваши проблемы, обратитесь к специалисту.
Именно. Почему меня должен волновать туториал? Ты ещё скажи, что меня должно беспокоить, что написано в туториале по C++ на сайте cplusplus.com.
> they are often used in different situations and for different purposes.
> usually contain
Никакой конкретики, никаких референсов. Тот, кто писал туториал, предпочитает такую интерпретацию, это его право. Совершенно непонятно, почему чьё-то икспертное мнение побуждает тебя бегать по форумам и доказывать, что все вокруг неправы.
читани спекца.
Приведенный тобою референс отписывает техническую реализацию, а в туториале на python.org описывается как этим пользоваться.
В питоне ничего практически не форсится интерпретатором, но есть правила использования и обычно им следуют. Например, начинающиеся с подчеркивания символы не публичны (хотя никто не мешает к ним обращаться). Например, тупла это не "рид онли лист", хотя никто не мешает его так использовать.
В других языках тоже можно "обмануть" компилятор.
В сях можно скастить указатель на структуру с char полями в указатель на массив чаров и интерироваться по нему. Следуя твоей логике "структура в сях это массив" (привет, царь!) потому что это работает.
В HTML/CSS можно навесить background на таг strong, сделать его блочным, квадратным, и использовать в качестве кнопки.
Однако семантика у него "выделять важную часть текста", даже не смотря на то, что ее можно легко переопределить.
В джаве можно дергать рефреклисей приватные методы, и сделать вывод что контроля видимости в джаве нет, потому что ну вот же: работает!
Если что-то "просто работает" и идет в разрез с докой на основном сайте, то это хак.
Следуя моей логике этого делать нельзя, поскольку по стандарту такой код содержит Undefined Behavior.
> В джаве можно дергать рефреклисей приватные методы, и сделать вывод что контроля видимости в джаве нет, потому что ну вот же: работает!
Ты не поверишь, но фреймворки зачастую именно это и делают! При правильном использовании это полезно, и спека этого не запрещает.
> сделать вывод что контроля видимости в джаве нет
Есть, если выставить правильный секьюрити менеджер через setSecurityManager.
Почему? Если структура явно выровнена то почему нельзя кастить ее в array?
Как же кастят в структуру пришедшие из аппаратуры или по сети данные, если известно что это массив N байт с определенными значениями?
>> но фреймворки зачастую именно это и делают
Я в курсе, спасибо, однако речь была о том, что если в джаве можно рефлексией залезть куда угодно, то это не значит что в джаве нет контроля доступа.
Если в питоне можно туплой заменить лист, это не значит что тупла и лист это одно и тоже.
Разумеется это не одно и тоже. Тюпл иммутабельный вообще-то, а список — нет.
Понятно. В джаве нету контроля видимости, пока не выставлен SecurityManager
Вы все цари
Значит
info = ("You", 81)
name, iq = info # это называется unpacking
2) нет
3) нет
Invalid memory access
То есть, ты осознаёшь всю незаконность сего деяния и готов взять грех на душу?
Я Бар у Холода.
Если несколько человек соберёт из аватарок слово "вечность", где каждая буква будет нарисована в свободном редакторе лично пользователем, ничего незаконного не будет.
https://bit.ly/2M6Flue
Факт.
Отправлено с помощью "JavaScript".