<?php return function ($type) { if ($type == 'up') { DB::init(); $problems = DB::selectAll("select * from problems"); foreach ($problems as $info) { $problem = new UOJProblem($info); $difficulty = -1; $extra_config = $problem->getExtraConfig(); if (isset($extra_config['difficulty'])) { $old_difficulty = (float)$extra_config['difficulty']; $difficulty = (int)(3.0 * $old_difficulty + 5) * 100; $difficulty = (function ($search, $arr) { $closest = null; foreach ($arr as $item) { if ($closest === null || abs($search - $closest) > abs($item - $search)) { $closest = $item; } } return $closest; })($difficulty, UOJProblem::$difficulty); } DB::update([ "update problems", "set", [ "difficulty" => $difficulty, ], "where", [ "id" => $problem->info['id'], ] ]); echo "Problem: {$problem->info['id']} ({$difficulty})\n"; } } };