|
|
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Кстати, запустил код panandy , получил так: Код: plaintext 1. 2. 3. 4. 5. 6. А мои выдают: Код: plaintext 1. 2. 3. 4. 5. 6. Т.е. explode тянет перевод строки, если конфиг с виндовыми \n, а регулярки не тянут, т.е. выходит предпочтительнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 21:18:38 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Хотя нет. Если быть точнее, при UNIX EOL получаю регулярками: Код: plaintext 1. При WIN EOL регулярками: Код: plaintext 1. 2. Ну а при построчной обработке - 9 и 10 соответственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 21:26:53 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Т.е. при любом EOL-е при построчной обработке получаем захват EOL-а в данные А с регулярками, либо правильно, либо пол-EOL-а ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 21:29:36 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Затестил так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Где read_conf_c - это его код. Увы. eval вообще никакой критики не выдерживает. А регулярка чуть медленее вышла (иногда одинаковые результы показывает): Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 21:45:49 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
авторА регулярка чуть медленее вышла В смысле, регулярка и там, и там. А имелось ввиду "регулярка без eval-a, а с циклом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 21:46:49 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, вот такие вот косяки я считал за помарки и исправлял в коде у хабровцев (у 4 или 5 была такая помарка). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 23:07:43 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, меня чуть-чуть обогнал (на самом деле между запусками ты или на несколько сотых быстрее моего или на несколько сотых медленнее; panandy всегда обгоняет и тебя и меня ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 23:14:00 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 23:15:27 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
an0nymEdd.Dragon, меня чуть-чуть обогнал (на самом деле между запусками ты или на несколько сотых быстрее моего или на несколько сотых медленнее; panandy всегда обгоняет и тебя и меня ) То я не тебя обогнал, а код пандани немного подпортил ))) Если бы полностью иной код - другое дело А так, свежая и смелая идея с эвалом не прошла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 23:36:27 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, у меня код panandy немного поправлен, посмотри в листинге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2011, 23:40:19 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
an0nym, Ну то мелочь. Основные вопросы6 - как быстрее обработать текст, т.е. получить пары строк; - как быстрее из этих пар строк создать ассоц. массив. Ну видимо, тут уже ничего особого не намудришь (при условии, что конфиг корректен и не содержит лишнего, что нужно пропускать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2011, 11:40:27 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
an0nym, незнаю актуально или нет)) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2011, 19:44:05 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, чуть дольше panandy. Можете сами протестить. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2011, 02:12:33 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
an0nymr u, чуть дольше panandy. Можете сами протестить. :) вот чуть чуть раскочегарил) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2011, 08:22:35 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, реализации очень синтетические. в реальном конфиге вполне могут быть пустые строки, комментарии, некорректные или отсутсвующие значения и т.д. тоесть надо чтоб функция не умирала на них и не выдавала варнингов и нотисов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2011, 08:32:12 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, в этом смысле наши реализации вполне подходят (с file(..., FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES)). Проблемы начнутся только когда будет неоднозначное присвоение: a.b=c a.d=e a=f. Работать будет, но вот не обязательно, как хотелось бы. И еще надо внести правки насчет значения по умолчанию в случае a.b= или просто a.b но это полстрочки кода, которая сильно не замедлит. Вот если начать исключать невалидные строки (первый пример выше или, например, a..=aaa) - да, скорость сильно ухудшится. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2011, 08:49:02 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Т. е. я хотел сказать, что текущие самые быстрые решения полностью рабочие. :) Они умеренно правильно (на мой взгляд) съедят даже ошибочные строки. А вот если начнутся разговоры типа "Мы в конфиг можем и что-нибудь не то написать [имею в виду не инъекцию для evalа] - надо бы защититься от этого" - то там уже начнутся тормоза и сильное усложнение. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2011, 08:52:48 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Дана строка: Код: plaintext 1. * Уточнения и ограничения: - не использовать eval() - числа в строке: десятичные int или float - арифметические операции: + - * / - исходить что входная строка корректна, те содержит только парные скобки и корректную вложенность(валидность входного выражения проверять ненужно) - проверить правильность вычисления можно в поиске Гугла, там встроенный калькулятор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 06:27:21 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 10:39:21 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
artas, решений много. конечные автоматы, регулярки.... нагрузить для расчетов гугл - не самое лучшее решение) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 10:47:06 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
В калькуляторе Windows 7 явно не 100 получается :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 10:54:59 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
HettВ калькуляторе Windows 7 явно не 100 получается :) ну это известная фича) там калькулятор вычисляет в порядке ввода а не в порядке приоритета операций и скобок, как я понимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 11:15:40 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
2+2*2 == 6 по крайней мере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 11:19:11 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
(2+2)*2 == 8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 11:20:22 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=37197127&tid=1465177]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
206ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 510ms |

| 0 / 0 |
