uoj-rand-lib.php 920 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. function uojRand($l, $r) {
  3. return mt_rand($l, $r);
  4. }
  5. function uojRandString($len, $charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
  6. $n_chars = strlen($charset);
  7. $str = '';
  8. for ($i = 0; $i < $len; $i++) {
  9. $str .= $charset[uojRand(0, $n_chars - 1)];
  10. }
  11. return $str;
  12. }
  13. function uojRandAvaiableFileName($dir) {
  14. do {
  15. $fileName = $dir . uojRandString(20);
  16. } while (file_exists(UOJContext::storagePath().$fileName));
  17. return $fileName;
  18. }
  19. function uojRandAvaiableTmpFileName() {
  20. return uojRandAvaiableFileName('/tmp/');
  21. }
  22. function uojRandAvaiableSubmissionFileName() {
  23. $num = uojRand(1, 10000);
  24. if (!file_exists(UOJContext::storagePath()."/submission/$num")) {
  25. system("mkdir ".UOJContext::storagePath()."/submission/$num");
  26. }
  27. return uojRandAvaiableFileName("/submission/$num/");
  28. }
  29. function uojRandAvaiablePasteFileName() {
  30. return uojRandAvaiableFileName('/paste/');
  31. }